0

在下面的代码中,我只想要标签名称匹配元素的数量,但它返回 0 并在页面加载时发出警报(不是我想要的点击)。一个多小时找不到任何错误

<!DOCTYPE HTML>
<HTML>
<head>

<script language="javascript">

    document.getElementById("all").onclick = alert( document.getElementsByTagName("a").length);

</script>

</head>
<body>


<div id="all" class="a">Click</div>
<div class="a"></div>
<div class="a"></div> 

</body>
</HTML>

我是 JavaScript 的新手

4

2 回答 2

3

几个问题。第一个是@Ian 在他对您的问题的评论中指出的,第二个是您getElementsByTagName("a")在代码中没有任何<a>标签时调用的。你需要打电话getElementsByClassName("a")

document.getElementById("all").onclick = function() {
    alert( document.getElementsByClassName("a").length);
}

更新:

在Ian的评论之后,仔细检查了jsfiddle,发现它已经onLoad选择了。因此,这是带有window.onload和更新的 jsfiddle 的更正代码:

window.onload = function() {
  document.getElementById("all").onclick = function() {
    alert( document.getElementsByClassName("a").length);
  };
};

这是这个的jsfiddle

于 2013-08-18T06:30:21.173 回答
2

在加载 DOM 之前,您正在运行 JS。all这意味着当 JS 运行时,DOM 中不存在元素。像下面这样写,这就是这样做的方法。

var attachEve = function(){
   document.getElementById("all").onclick = function() {
       alert( document.getElementsByClassName("a").length);
   }
}
window.onload = attachEve; 

它应该工作!没有window.onload在 jsfiddle 中工作,因为 jsfiddle 在window.onload上下文中运行 JS。

于 2013-08-18T06:47:45.337 回答