在此代碼中,我應該將傾斜效果綁定到<map>
元素中的每個<area>
標記。爲什麼這個javascript綁定事件的正確參數?
function initLinks(webrt) {
var areas = document.querySelectorAll("map#streetmap > area");
var links = new Array(areas.length);
for (var i=0; i<links.length; i++) {
links[i] = new Image(786,272);
links[i].src = webrt+"templates/default/sketches/links"+(i+1)+".png";
areas[i].onmouseover=function(){switchLinkImg(webrt+"templates/default/sketches/links"+(i+1)+".png");};
areas[i].onmouseout=function(){switchLinkImg(webrt+"templates/default/sketches/links.png");};
}
}
奇怪的是,每個<area>
onmouseover事件試圖加載不存在的圖像:/templates/default/sketches/links6.png
。爲什麼它保持這個變量i
,它已經增加到6作爲一個全局變量,而不是把我傳遞給函數的字符串?
我該如何解決這個問題?
注意:沒有jQuery!
因爲只有一個*變量,稱爲'i'和'webrt'。搜索「JavaScript循環關閉」。 – user2246674
請參閱http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example - 使用「雙閉合」或「Function.bind」。 – user2246674
@ user2246674我遇到的困惑是當我傳遞字符串'webrt +「templates/default/sketches/links」+(i + 1)+「。」png「''不應該將函數綁定到結果字符串? – user1094607