JS什么都不做...尝试更改<ul> <li>



我无法用JS改变"class"属性…我已经搜索了几个小时,没有看到任何其他尝试....这里是源代码:(注意,我是在我的笔记本电脑上做的,在本地…

   <html>
    <head>
        <title>jS chg class</title>
    </head>
    <script>
    var listitems = document.getElementsByTagName("li");
    for (int i = 0; i < listitems.length; i++)
     {
      if (listitems[i].className == "trash")
      {
       listitems[i].className = "keep";
       break;
      }
    }
    </script>
    <body>

        <div id="junk">

            <span id="categorylabel">Closet Junk:</span>
            <ul id="junklist">
                <li class="trash">books</li>
                <li class="trash">shoes</li>
                <li class="trash">clothes</li>
            </ul>
            </div>
    </body>
     </html>

在for循环中使用var代替int:

var listitems = document.getElementsByTagName("li");
for (var i = 0; i < listitems.length; i++) {
  if (listitems[i].className == "trash") {console.log("sdfg")
     listitems[i].className = "keep";
     break;
  }
}
这里是jsFiddle

as gurvinder372 comment…把<script>标签放到<body>的底部。

。思考者的答案(在for循环中将int更改为var)

<html>
  <head>
    <title>jS chg class</title>
  </head>
  <style>
    .trash { color : red; }
  </style>
<body>
<div id="junk">
  <span id="categorylabel">Closet Junk:</span>
  <ul id="junklist">
      <li class="trash">books</li>
      <li class="trash">shoes</li>
      <li class="trash">clothes</li>
  </ul>
</div>
<script> ///// HERE
  var listitems = document.getElementsByTagName("li");
  for (var i = 0; i < listitems.length; i++) // and HERE
  {
    if (listitems[i].className == "trash")
    {
      listitems[i].className = "keep";
      break;
    }
  }
</script>
</body>
</html>

必须在文档准备好后应用Javascript。

试试这个:

(function() {
    ...
    your script
    ...
})();

这里是jsfield

以下是一些问题。

  1. 你已经把js inside头标签。当这将被解析,不会有任何DOM元素li。如果你想把它放在head里面那就放到window.onload里面

  2. 和java一样,javascript没有变量类型声明。使用var关键字

  3. 声明所有类型的变量,无论是字符串还是数字或其他类型的变量
  4. 当您使用break关键字时,您的逻辑将只匹配第一个元素并将跳出循环。所以你可能需要删除break关键字

检查这个片段

var listitems = document.getElementsByTagName("li");
    for (var i = 0; i < listitems.length; i++){
      if (listitems[i].className == "trash")
      {
       listitems[i].className = "keep";
       //break;
      }
    }

JSFIDDLE

注意:在jsfiddle中取消注释断行来复制问题

最新更新