0
我正在创建一个简单的电话簿,它将个人姓名,姓氏和电话添加到一个div中,并添加到DOM中,并带有单击事件删除此div的选项。 我有一个名为电话簿类包含这两个函数:由于某种原因的addEventListener是射击两次addEventListener触发两次
//add an event button to all divs inside the DOM
this.deleteBtnEvent = function(){
var _this = this;
//get all the divs that currently on the DOM
var deleteBtn = document.getElementsByClassName('delete');
for (var i = 0; i < deleteBtn.length; i++) {
deleteBtn[i].addEventListener('click', function(e){
_this.removeContact(e.target.parentElement.attributes.index.value);
});
}
};
//remove the div from the array and from the DOM
this.removeContact = function(index){
var contactsHolder = document.getElementById('contacts');
var contact = document.getElementsByClassName('contact');
this._contacts.splice(index, 1);
contactsHolder.removeChild(contact[index]);
//update localstorage
var stringArr = JSON.stringify(this._contacts);
localStorage.setItem('data', stringArr);
console.log('current: ');
console.log(this._contacts);
};
。 第一次调用addEventListener,函数从DOM和数组中删除div,第二次侦听器被触发,我得到一个错误,因为具有相同ID的div不存在,因为它已经存在删除。 我想知道是否有办法解决这个问题。
由于您将点击事件绑定了两次,所以会触发两次。 – dfsq
你可以做一个小提琴或附加代码中的整个片段(至少一个小副本)。所以我可以在我的最后复制它。 – Ayan
https://jsfiddle.net/Lshf1cdx/ –