使用getElementsByClassName和setAttribute返回未定义的错误?

时间:2016-02-17 04:04:37

标签: javascript

我有这段代码:

<html>
<body>
<script>
function myFunction (){
    // some javascript
}
document.getElementsByClassName('test')[0].setAttribute("onclick", "myFunction()");
</script>
<button class="test"> Submit Request </button>
</body>
</html>

我想使用在页面加载时执行的JavaScript将onclick属性添加到页面上的按钮。

现在这样做我得到一个错误,上面写着无法读取属性&#39; setAttribute&#39;未定义的。

有谁知道我为什么会收到此错误以及如何解决此问题?

注意:访问该按钮的唯一选择是通过它的class属性,我无法以任何方式修改button元素。

谢谢!

2 个答案:

答案 0 :(得分:3)

您收到错误,因为当您尝试访问该元素时该元素不存在。您需要执行事件绑定操作printf事件。

window.onload

我建议您使用EventTarget.addEventListener()并更好地使用DOMContentLoaded事件

window.onload = function(){
    document.getElementsByClassName('test')[0].addEventListener("click", myFunction, false);
}

答案 1 :(得分:0)

像这样使用:

document.getElementsByClassName('test')[0].setAttribute("onclick", myFunction);

请注意,该引号已从myFunction中删除,并且括号也会被删除,因为它只是在单击按钮时才需要使用此功能。