变量" i"不在javascript for循环中显示

时间:2016-09-20 05:08:20

标签: javascript html loops for-loop

我正在尝试做一些循环练习并将蓝色样式应用于所有"列出"具有单击事件的类。除此之外,我还想打印" i"的价值。在每个循环中。任何人都可以指出代码中缺少的东西。谢谢 这是我的代码:



function changeClass(){
  
   for (i=0;i<3;i++) {
      var list =  document.getElementsByClassName("listing")[i];
      list.style.color = "blue";
      var values = document.getElementsByClassName("value");
      document.write(i);
   }
}

document.getElementById("change").addEventListener("click", changeClass);   
&#13;
<ul id="groupList">
<li class="listing">First</li>
<li class="listing">First</li>
<li class="listing">First</li>
<li class="value"></li>
</ul>
<button id="change">change listing</button>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:5)

您已经使用了document.write()函数,它可能会覆盖文档HTML内容,您可以使用console.log()方法来调试变量。还要在一个变量中使用元素引用,这样可以更快地执行。将class="value"更改为id="value",因为它只有一个元素,因此标识符是好的而不是类。类引用多个元素,但id仅引用一个元素。

&#13;
&#13;
function changeClass(){
   var dom=document.getElementsByClassName("listing");
   var all_index=[]
   for (i=0;i<dom.length;i++) {
      var list =  dom[i];
      list.style.color = "blue";
      all_index.push(i);
      
   }
   document.getElementById("value").innerHTML=all_index.join(",");
      
}

document.getElementById("change").addEventListener("click", changeClass);
&#13;
<ul id="groupList">
<li class="listing">First</li>
<li class="listing">First</li>
<li class="listing">First</li>
<li id="value"></li>
</ul>
<button id="change">change listing</button>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

你需要添加一个监听器来调用chageClass函数

document.getElementById("change").addEventListener('click',changeClass,true);

在这里,我要说明for循环问题的原因:

inside your for loop when i==0;

document.write(i) elimenate 文档中的所有元素,如果一切正常,将在您的文档中打印0。

when i==1 in for loop :

以下行将变为无效,因为没有元素持有“list”类。所有其他元素都从文档中删除。现在它将消除"0"表单文档并在文档中打印"1"只要for循环继续,它就会继续运行。

var list =  document.getElementsByClassName("listing")[i]; 

如果您要在文档中打印,请使用 document.body.innerHTML

   function changeClass(){

   for (i=0;i<3;i++) {
      var list =  document.getElementsByClassName("listing")[i];

      list.style.color = "blue";
      var values = document.getElementsByClassName("value");
     document.body.innerHTML+='<br>'+i+'<br>';
   }

}
  document.getElementById('change').addEventListener('click',changeClass,true);