簡體   English   中英

addEventListener的參數似乎無法正常工作

[英]Parameter for addEventListener doesn't seem to work properly

我將創建一個“幻燈片放映”(如果您將其稱為“幻燈片放映”),以進行頁面導航。

我正在嘗試使用forloop將事件監聽器添加到所有菜單項。 而且它似乎不起作用。 基本上我有一個基於參數顯示新頁面的函數。

function slidePFer(page_side){

這可以通過手動設置事件監聽器來實現,如下所示:

showPF  = document.getElementsByClassName('showPF');

showPF[0].addEventListener('click', function(){ slidePFer(0); }, false);
showPF[1].addEventListener('click', function(){ slidePFer(1); }, false);
showPF[2].addEventListener('click', function(){ slidePFer(2); }, false);
showPF[3].addEventListener('click', function(){ slidePFer(3); }, false);

但是,這看起來很混亂。 所以我試圖用不同的循環來運行它。 而且我只是無法使其工作,這是我嘗試過的更令人發指的循環之一:

for(var i=0, n=showPF.length; i<n; i++){
    showPF[i].addEventListener('click', function(){ slidePFer(i); }, false);
}

有人可以看到我似乎不明白的內容嗎?

從函數(i)中刪除i也許這會解決它

使用jQuery( http://jquery.com ),可以這樣簡化:

html

<img slideNo="0" class="showPF" src="slide_0_preview.jpg" />
<img slideNo="1" class="showPF" src="slide_1_preview.jpg" />
<img slideNo="2" class="showPF" src="slide_2_preview.jpg" />

javascript

<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $('.showPF').click(function() {
            slidePFer($(this).attr('slideNo'));
        });
    });
    function slidePFer(slideNo) {
        // todo
    }
</script>

我終於為有興趣的人找到了解決方案,這是我的方法:

showPF          = document.getElementsByClassName('showPF');

var i = showPF.length;
    while(i--){
        showPF[i].addEventListener('click', function(x){ return function(){ slidePFer(x); }; }(i),false);
    }

信用在哪里信用: http//brackets.clementng.me/post/24150213014/example-of-a-javascript-closure-settimeout-inside-a

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM