getElementsByClassName方法不返回任何元素

时间:2014-06-22 20:31:02

标签: javascript

这不应该是一项艰巨的任务,但由于任何原因,它一直无法工作,我无法弄清楚原因。基本上,我想在下面的代码中删除类名为“def”的段落,但脚本部分中使用的getElementsByClassName方法似乎无法检测到它,不返回任何元素:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript">

    var elems = document.getElementsByClassName('def');
    alert(elems.length);
    while(elems[0]) {
        elems[0].parentNode.removeChild(elems[0]);
    }

</script>
</head>
<body>
<h1>This is a title</h1>
<p>Sample paragraph</p>
<p>Another sample paragraph</p>
<p class="def"><p id="definition">Text</p></p>
</body>
</html>

任何人都知道出了什么问题?提前谢谢!

1 个答案:

答案 0 :(得分:1)

<script language="javascript">

    var elems = document.getElementsByClassName('def');
    alert(elems.length);
    while(elems[0]) {
        elems[0].parentNode.removeChild(elems[0]);
    }

</script>

在HTML部分之后插入。

原因:在声明HTML属性之前正在执行脚本。

修改

感谢comment

或者你可以在JQuery中使用body onload函数

$(document).ready(function() {
// script here
});