Javascript 未捕获类型错误:无法设置属性';onclick';空的onclick不工作

Javascript 未捕获类型错误:无法设置属性';onclick';空的onclick不工作,javascript,html,Javascript,Html,下面是我的javascript <script type="text/javascript"> document.getElementById('auth').onclick=change; function change(){ this.className="account_holder"; } </script> document.getElementById('auth')。onclick=change; 函数更改(){ this.className=“

下面是我的javascript

<script type="text/javascript">
document.getElementById('auth').onclick=change;
function change(){
    this.className="account_holder";
}
</script>

document.getElementById('auth')。onclick=change;
函数更改(){
this.className=“账户持有人”;
}
html是

<td id="auth" class="authorised_reportericon" >
                        <a href="{% url incident.views.authorised_reporter %}">
                        <p align="center" style="color:black;font-size:16px;">Authorised Reporters</p></a>
                    </td>


我为onclick分配了td的id,但它将错误设置为未捕获的TypeError:无法将属性“onclick”设置为null。getElementById('auth')。onclick=change
窗口内。onload
,如:

window.onload = function () {
    document.getElementById('auth').onclick=change;
};
根据您得到的错误,我猜您的Javascript是在呈现相关HTML之前执行的,这意味着找不到具有
id
“auth”的元素。将它放在整个DOM就绪的事件中应该可以解决问题


演示:

很可能您已将脚本放置在文档的
标题中,这意味着它在呈现页面其余部分之前运行

相反,将其移动到
正文
中的最底部,就在关闭
标记之前

<!doctype html>
<html>
    <head>
        <title>my page</title>
    </head>
    <body>

        <!-- your page content -->

        <!-- your script -->
        <script type="text/javascript">
        document.getElementById('auth').onclick=change;
        function change(){
            this.className="account_holder";
        }
        </script>
    </body>
</html>

我的页面
document.getElementById('auth')。onclick=change;
函数更改(){
this.className=“账户持有人”;
}
现在,这些元素将在脚本运行之前可用。这是因为页面按从上到下的顺序呈现,加载时脚本会阻止呈现

因此,当脚本位于头部时,它会阻止其下方页面的其余部分呈现,直到脚本完成,这意味着
“auth”
还不存在


使用脚本的这种末端定位技术,可以使它比等待
窗口.onload
事件更快地运行。

之所以发生这种情况,是因为ID为“auth”的元素不存在。为什么?因为DOM还没有完全加载以了解元素。使用
window.onload=function(){}
并放入逻辑there@mattytommo谢谢:)呵呵,没问题,我已经设置好了(只有他的代码)当你发布答案时,我添加了你的代码以确保,然后我想我会+1你并添加链接,因为你是对的!:)