我无法用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
以下是一些问题。
-
你已经把js inside头标签。当这将被解析,不会有任何DOM元素
li
。如果你想把它放在head
里面那就放到window.onload
里面 -
和java一样,javascript没有变量类型声明。使用var关键字
声明所有类型的变量,无论是字符串还是数字或其他类型的变量 当您使用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中取消注释断行来复制问题