2011-04-20 84 views
0

在該代碼存儲值時,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

有時候是最麻煩的事情。這是你試圖提醒堆棧長度的方式來:不是,如果alert("stack: ",stack.length);(結果將是:「堆:」),用途:alert("stack: "+stack.length);alert(["stack: ",stack.length].join('')),或重寫alert所以它可以接收多個參數:

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

很好,解決它,這是一個編程錯誤與動作。 – 2011-04-20 08:09:09

0

假設temp中有任何東西,代碼成功推入stack。但我認爲你的alert可能會混亂:

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

你可能想要一個+那裏,alert只需要一個參數。

例子(我開始與temp = "one,two,three"如果您沒有Cookie的jsbin.com):

Your version(顯示stack:但沒有長度)

Working version(顯示stack: 1,然後stack: 2,然後stack: 3