如何访问动态创建的 JavaScript中的元素?

问题描述 投票:0回答:1

我正在尝试访问动态创建的元素<li>。我已经通过使用TagName进行了尝试,但是它不起作用...

HTML

 <body onload="ops()">
 <div id="list"></div>

JavaScript

  function ops()
 {
     var ar=["Nucleotide_chnage","Ethinicity","study of dance","disease"];
     var text="<ul>";
  for(i in ar)
  {

     text+="<li>"+ar[i]+"<span>"+"&gt"+"</span>"+"</li>";

 }
     text+="</ul>";
     var y=document.getElementById("list").innerHTML=text;
}

 var close=document.getElementByTagName("li");
 for(var i=0;i<close.length;i++)
 {
    close[i].addEventListener("click",function(){

     this.parentElement.style.display='none';
 });

 }

我想澄清点击事件是否可以关闭onload事件?

javascript html-lists
1个回答
0
投票

这应该起作用,在注释中进行了解释,并改进了一些删除级联。

var body = document.querySelector("body");
  var ar=["Nucleotide_chnage","Ethinicity","study of dance","disease"];

  var ul = document.createElement('ul');
  for(i in ar) {
    // text+="<li>"+ar[i]+"<span>"+"&gt"+"</span>"+"</li>";
    var li = document.createElement('li');
    var span = document.createElement('span');
    span.textContent = "&gt";

    li.appendChild(span);
    ul.appendChild(li);
  }

  // You have to attach the elements to DOM to create listeners
  body.appendChild(ul);


  // you have a typo
  // getElementByTagName is getElementsByTagName
  var close=document.getElementsByTagName("li");
    for(var i=0;i<close.length;i++) {
        close[i].addEventListener("click",function(){
            this.parentElement.style.display='none';
        });
  }
© www.soinside.com 2019 - 2024. All rights reserved.