无法在堆栈中存储值

时间:2011-04-20 07:37:28

标签: javascript

在此代码中,subKeys有一些值从cookie中提取,消息提示cval: 3但我无法将每个subKeys值存储到stack数组中这是stack总是空的。

var stack = new Array();
var temp = document.cookie;

//alert("cookie: "+temp);
function upSelect() {
    temp = temp.replace("tutorSelect=","");
    subKeys=temp.split(",");
    for(var i=0;i<subKeys.length;i++) {
        alert("cval: "+subKeys.length);
        //push to stack?
        stack.push(String(subKeys[i]));
        alert("stack: ",stack.length);
        document.getElementById("t"+subKeys[i]).src="tta/rem.png";
    }
}

2 个答案:

答案 0 :(得分:2)

有时这是最烦人的事。这是您尝试提醒堆栈长度的方式:相反,如果alert("stack: ",stack.length);(结果将是:'stack:'),请使用:alert("stack: "+stack.length);alert(["stack: ",stack.length].join('')),或重写alert所以它可以接收多个参数:

window._alert = alert;
window.alert = function(){
  _alert(Array.prototype.slice.call(arguments).join(''));
}

答案 1 :(得分:0)

假设temp中包含任何内容,该代码成功推送到stack。但我认为你的alert可能搞砸了:

alert("stack: ",stack.length);
//             ^--- here

你可能想要+alert只需要一个参数。

示例(如果您没有jsbin.com的cookie,我以temp = "one,two,three"开头):

Your version(显示stack:但没有长度)

Working version(显示stack: 1,然后显示stack: 2,然后显示stack: 3