2012-11-27 70 views
0

下面是代碼:添加變量HREF在「for」循環

for (i = 0; i < 8; i++) { 
    var meun = document.createElement("div"); 

    meun.setAttribute('id', i); 
    meun.setAttribute("style", "width:70px; height:70px; background:url(archive/" + i + ".jpg); background-size: 70px 70px; float:left; margin-top:10px; opacity:1"); 
    document.body.appendChild(frame); 
    document.getElementById("frame").appendChild(meun); 

    meun.addEventListener('click', function() { 
     window.location.href = "i+'.html'" 
    }, false); 
} 

我的問題是,在addEventListener:如何通過可變ihref?我想這是一個語法問題。

+0

最好避免使用開始用數字和數字是,使用字母標識或下劃線代替,同爲類) – dmi3y

回答

3

不僅有語法問題,你還需要一個封閉:

(function(x) { 
    meun.addEventListener('click', function(){window.location.href = x + '.html'}, false); 
})(i); 
2

如果你想使用變量i,不要把它放在引號,這將意味着從字面上字母「i」:

meun.addEventListener('click', function() { 
    window.location.href = i + '.html'; 
}, false); 
+0

作爲bfavaretto指出的那樣,你也需要關閉。否則,我==所有處理程序的8。 –

+1

當菜單項被點擊時,'i'將等於'8',所以你的代碼總是以'window.location.href ='8.html';'結尾。 – Engineer

+0

@Engineer與問題中指定的問題不同。參考bfavaretto的答案。 – jbabey