如何按类循环函数事件?

时间:2014-08-07 15:04:15

标签: javascript html5 dom

我想通过点击类来循环一个函数。代码看起来像这样。

课程方式

HTML

<button class="btn">B</button>
<button class="btn">I</button>
<div id="ctn"></div>

的JavaScript

<script>
var btn = document.getElementsByClassName('btn');
var ctn = document.getElementById('ctn');
ctn.contentEditable = true;

for(i=0; i<btn.length; i++){
var a = ["'bold'","'italic'"];
btn[i].addEventListener('click', function(){
document.execCommand(a[i],false,null);
}, false);}

</script>

点击它时,它不会发生。使用ID查看手册下方。

ID方式

HTML

<button id="bold">B</button>
<button id="italic">I</button>
<div id="ctn"></div>

的JavaScript

    var bold = document.getElementById('bold');
    var italic = document.getElementById('italic');

    bold.addEventListener('click', function(){document.execCommand('bold',false,null);}, false);
italic.addEventListener('click', function(){document.execCommand('italic',false,null);}, false);

使用ID方式是否有效。但是班级不起作用。如何按类循环函数?

nb:在JavaScript而不是JQuery上回答它。感谢您阅读:)

1 个答案:

答案 0 :(得分:1)

您需要使用闭包来绑定循环中的元素,如下所示:

for(i=0; i<btn.length; i++){
    (function(i) {  //closure inside so i is correct. 
        var a = ["bold","italic"]; //removed quotes
        btn[i].addEventListener('click', function(){
            document.execCommand(a[i],false,null);
        }, false)
    })(i);
}