我正在使用innerHTML在其上添加一些元素和包装器
for (i = 0; i < arr.length; i++) {
b.innerHTML += "<div class='wrapper'><div class='col-4'>" + arr[i].storeID + "</div>" +
"<div class='col-4'>" + arr[i].Bookid + "</div>" +
"<div class='col-4'>" + arr[i].StoreName + "</div>" + "</div>"
var d=document.querySelector('.wrapper')
d.addEventListener("click", function(e) {
console.log('on click fired')
/*insert the value for the autocomplete text field:*/
inpStr=this.innerHTML
inp.value = this.innerHTML
/*close the list of autocompleted values,
(or any other open lists of autocompleted values:*/
closeAllLists();
});
}
innerHTML
按预期工作,但是当我单击wrapper
行时,我得到
使用innerHTML时,
无法读取null的属性“”addEventListener“”
这是因为我正在使用innerHTML创建元素吗?
发布于 2019-06-27 10:00:02
问题是querySelector只返回类为.wrapper的第一个元素
应该使用querySelectorAll()返回一个.wrappers数组,并使用for循环遍历以放置事件侦听器。
或者,您可以使用一种称为事件委派的技术,将事件侦听器放在父对象上,并使用event.target来引用所单击的子对象。
发布于 2019-06-27 13:24:55
好吧,我仍然不确定是什么导致了这个问题。但我将上面的代码更改为类似以下内容:
$(b).on('click','#wrapper',function(){
console.log('on click fired')
/*insert the value for the autocomplete text field:*/
inpStr=this.innerHTML
inp.value = this.innerHTML
/*close the list of autocompleted values,
(or any other open lists of autocompleted values:*/
closeAllLists();
})
它给了我正确的innerhtml。我只需要弄清楚如何从标签内部检索到这个值。
发布于 2019-06-27 13:43:23
首先,您有多个.wrapper
,所以当您执行var d=document.querySelector('.wrapper')
时,您总是只获得第一个创建的wrapper
您将需要当前创建的包装器。这就是你应该做的,看看下面。
var d= document.createElement("div") // Create a new div
b.append(d); // append the new Created div to b
d.className = "wrapper";
d.innerHTML = "<div class='col-4'>" + arr[i].storeID + "</div>" +
"<div class='col-4'>" + arr[i].Bookid + "</div>" +
"<div class='col-4'>" + arr[i].StoreName + "</div>";
// Add your click operation
d.addEventListener("click", function(e) {
console.log('on click fired')
/*insert the value for the autocomplete text field:*/
inpStr=this.innerHTML
inp.value = this.innerHTML
/*close the list of autocompleted values,
(or any other open lists of autocompleted values:*/
closeAllLists();
});
https://stackoverflow.com/questions/56782256
复制相似问题