我在使用 addEventListener 调用即时函数时遇到问题,它调用了两次。试图从冒泡变为捕获但不起作用。这是我的代码
一些描述:我正在尝试在单击的位置添加文本框。
var mod = (function(){
var sEventType = 'click',
labelObj = document.getElementsByTagName('label');
return {
createTextBox : function(targetId,inputVal){
alert('hi');
var elemInput = document.createElement('input');
},
addEvents : function(){
for (var i = 0; i < labelObj.length; i++) {
if (window.addEventListener) //Firefox, Chrome, Safari, IE 10
labelObj[i].addEventListener(sEventType,function(){ mod.createTextBox(this,this.innerHTML);}, false);
else if (window.attachEvent) //IE < 9
labelObj[i].attachEvent(sEventType, function(){ mod.createTextBox(this,this.innerHTML);});
}
}
}
}());
//Intialise Event
mod.addEvents();
查看调用 createTextBox 的 addEventListener ,弹出窗口内的警报两次。
这是HTML部分
<body>
<div id='tableMain'>
<div id='exlTopHd'>
<div id='loginData'>
<div id='yourName'><label id='mNam'>type your name here</label></div>
<div id='yourEmail'><label>your email address</label></div>
</div>
<div id='exlCtr'>
<div id='exlTitle'><label>add title<lable></div>
<div id='addRow'>+row</div>
<div id='addColomn'>+colomn</div>
<div id='saveExl'>saving...</div>
</div>
</div>
<div id='exlTb'></div>
</div>