Как получить доступ к динамически созданному элементу <li>в javascript? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь получить доступ к динамически создаваемым элементам <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';
 });

 }

Я хочу уточнить, что события загрузки могут быть закрыты по событию щелчка?

1 Ответ

0 голосов
/ 16 апреля 2020

Это должно работать, объяснено в комментариях и немного улучшено удаление конкатенации.

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';
        });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...