簡體   English   中英

添加JavaScript onclick功能

[英]add javascript onclick function

我在onclick上遇到問題,當我不向函數發送參數時,參數總是發送給相同的函數(與最后一個參數相同)。我的錯誤是什么?

    var N = 5;
    var btns = [];
    for(var opt = 0 ; opt < N ; ++opt){ 
        var resp = "option #" + opt; 

        var options = document.createElement('input'); 
        options.setAttribute('type' , 'button'); 
        options.setAttribute('value' , resp); 
        options.addEventListener('click' , function(){ 
            doClick(resp);
        });

        btns.push(options);
    }
    var divMain = document.getElementById('mainDiv');
    for(var i = 0 ; i < btns.length ; ++i){
        divMain.appendChild(btns[i]); // add btns to main div
    }

您是否在代碼中聲明了body元素?

 var N = 5; var btns = []; for(var opt = 0 ; opt < N ; ++opt){ var resp = "option #" + opt; var options = document.createElement('input'); options.setAttribute('type' , 'button'); options.setAttribute('value' , resp); options.addEventListener('click' , function(){ doClick(resp); }); btns.push(options); } var divMain = document.getElementById('mainDiv'); for(var i = 0 ; i < btns.length ; ++i){ divMain.appendChild(btns[i]); // add btns to main div } 
 <html> <body> <div id='mainDiv'></div> </body> </html> 

您需要使用閉包

代碼示例:

           var N = 5;
        var btns = [];
        for(var opt = 0 ; opt < N ; ++opt){ 
            var resp = "option #" + opt; 
            var resp=opt;
            var options = document.createElement('input'); 
            options.setAttribute('type' , 'button'); 
            options.setAttribute('value' , resp); 
            options.onclick=
                 (function(opt) {
                    return function() {
                         console.log("res: ",opt);
                }
                })(opt);

            btns.push(options);
        }
        var divMain = document.getElementById('mainDiv');
        for(var i = 0 ; i < btns.length ; ++i){
            divMain.appendChild(btns[i]); // add btns to main div
        }

在此示例中,每次單擊按鈕都會顯示不同的值。 因此,在我編寫console.log的位置設置您的代碼。

祝好運

暫無
暫無

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

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