Javascript “字符串”;“开始”;在列表索引期间打印到控制台
使用forEach循环索引ul列表时遇到问题。此列表的子元素是动态创建的。在向每个列表项添加事件处理程序并在单击时记录其innerHTML或textContent之后,返回的是字符串“START”,而不是包含HTML或文本的元素 其次,我希望能够返回元素索引,但我遇到了另一个问题。当索引包含每个列表项文本的已创建数组时,返回的是-1,而不是数组元素的实际索引。道具给任何能帮我解决这个问题的人!代码如下:Javascript “字符串”;“开始”;在列表索引期间打印到控制台,javascript,list,events,this,innerhtml,Javascript,List,Events,This,Innerhtml,使用forEach循环索引ul列表时遇到问题。此列表的子元素是动态创建的。在向每个列表项添加事件处理程序并在单击时记录其innerHTML或textContent之后,返回的是字符串“START”,而不是包含HTML或文本的元素 其次,我希望能够返回元素索引,但我遇到了另一个问题。当索引包含每个列表项文本的已创建数组时,返回的是-1,而不是数组元素的实际索引。道具给任何能帮我解决这个问题的人!代码如下: var items=document.querySelectorAll(#选项列表>li”)
var items=document.querySelectorAll(#选项列表>li”);
itemList=[];
items.forEach((项目)=>{
itemList.push(item.textContent);
});
items.forEach((项目)=>{
item.addEventListener(“单击”,()=>{
var option=itemList.indexOf(this.textContent);
log(this.innerHTML);
});
});
我发现我可以使用事件对象来索引我正在按的元素。看一看!如果他们是任何其他人谁有一个替代的解决方案,请张贴
items.forEach((item)=>{
item.addEventListener("click", (e) => {
var option = itemList.indexOf(e.target.textContent);
});
});
一个快速的技巧是使用spread运算符将返回的转换为使用的数组。假设您想保存它以供以后使用,否则只需在节点列表上使用forEach 在
forEach
中,您可以在侦听器中重复使用item变量,而不是使用此
。由于箭头函数=>
,因此无法工作。
索引也会传递给
var items=[…document.querySelectorAll('#options list>li')]
items.forEach((item,index)=>item.addEventListener('click',e=>{
log(索引,item.innerHTML)
}))