我很困惑。我想要構建一個畫廊,您可以點擊任何圖像,並將全尺寸圖像疊加在文檔上(有點像Facebook畫廊)。Javascript事件監聽器讓我困惑
畫廊的縮略圖會顯示一些PHP。它看起來像這樣:
$i = 0;
while($img_dir = mysqli_fetch_assoc($gallery_q))
{
$i++;
echo
'
<div class="entry"><div class="image" id="' . $img_dir['dir'] . '">
<img id="img' . $i . '" src="' . $img_dir['thumb_dir'] . '" /></div></div>
';
}
我然後取得與json_encode圖像的數量,併產生一串事件偵聽器與一個循環,像這樣:
for(var i = 1; i <= nbImg; i++)
{
document.getElementById("img" + i).addEventListener("click", display(i));
}
顯示功能在下面的:
function display(i)
{
document.getElementById("body").insertAdjacentHTML("afterBegin",
'<div id="display"><div><img src="' + document.getElementById("img" + i).parentNode.getAttribute("id") + '"></div>');
style.insertAdjacentHTML("beforeend",
"#display{z-index: 20; position: fixed; width: 1000px; height: 1000px; left: 50%; top: 10%; margin-left: -600px;");
}
嗯,它的工作原理..除了display()被調用沒有任何問候我是否點擊圖像或不。但是,當我將這種行爲限制爲只有一個圖像時(即事件偵聽器不在循環中並且沒有參數傳遞給該函數;它只是顯示預設圖像),則一切正常。點擊時觸發事件。
實際上,這並不是我第一次遇到這種現象,即觸發的監聽功能,而不管我要求事件監聽器監聽的事件。它發生的最常見的警報,我真的不明白爲什麼。有人能幫我嗎?
完美地工作,謝謝! – Afunakwa 2015-03-02 14:42:48