15 Uncaught TypeError: Cannot set properties of null (setting ‘onclick‘)

简介: 这篇文章解释了在HTML文档中因JavaScript代码在页面元素加载之前执行导致的"Cannot set properties of null (setting ‘onclick’)"错误,并提供了将JavaScript代码置于`<body>`标签内或使用`window.onload`事件确保DOM完全加载后再绑定事件处理器的解决办法。

1、报错的代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>标题</title>
    <style type="text/css"> </style>

        <script type="text/javascript">

            //获取button对象
            var btn = document.getElementById("btn");

            //为按钮的对应事件绑定处理函数的形式来响应事件,当事件被触发时,对应的函数将会被调用
            btn.onclick = function () {
                alert("触发了点击事件");
            };

            var btn1 = document.getElementById("btn1");
            var btn2 = document.getElementById("btn2");
            btn1.onclick = function () {
                document.getElementById("t2").value = document.getElementById("t1").value
            };

            btn2.onclick = function () {
                document.getElementById("t2").value = ""
            }



        </script>

</head>

<body>
    <button id="btn">我是按钮</button>

    <br><br>
    <input id="t1" type="text" value="文本1">
    <input id="t2" type="text">
    <button id="btn1">copy</button>
    <button id="btn2">取消</button>

</body>

</html>

2:报错的原因

文档的加载过程是自上向下加载。使用未命名的变量、会报错

3、解决办法

1、将Javascript代码从<head>标签中放入<body>
2、如果非要将该段代码放入到head标签中该怎样做???

在这里插入图片描述
修改后的代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>标题</title>
    <style type="text/css"> </style>

        <script type="text/javascript">

        window.onload = function(){

                  //获取button对象
            var btn = document.getElementById("btn");

            //为按钮的对应事件绑定处理函数的形式来响应事件,当事件被触发时,对应的函数将会被调用
            btn.onclick = function () {
                alert("触发了点击事件");
            };

            var btn1 = document.getElementById("btn1");
            var btn2 = document.getElementById("btn2");
            btn1.onclick = function () {
                document.getElementById("t2").value = document.getElementById("t1").value
            };

            btn2.onclick = function () {
                document.getElementById("t2").value = ""
            }

        }


        </script>

</head>

<body>
    <button id="btn">我是按钮</button>

    <br><br>
    <input id="t1" type="text" value="文本1">
    <input id="t2" type="text">
    <button id="btn1">copy</button>
    <button id="btn2">取消</button>

</body>

</html>
相关文章
|
1月前
引用 AspNetCoreRateLimit => StatusCode cannot be set because the response has already started.
引用 AspNetCoreRateLimit => StatusCode cannot be set because the response has already started.
40 0
TypeError: Cannot set properties of undefined (setting ‘resdata‘),res定义数据出现的问题,定义的方法用this换成that
TypeError: Cannot set properties of undefined (setting ‘resdata‘),res定义数据出现的问题,定义的方法用this换成that
|
1月前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
24天前
|
Java
【Java集合类面试二十二】、Map和Set有什么区别?
该CSDN博客文章讨论了Map和Set的区别,但提供的内容摘要并未直接解释这两种集合类型的差异。通常,Map是一种键值对集合,提供通过键快速检索值的能力,而Set是一个不允许重复元素的集合。
|
1月前
|
存储 JavaScript 前端开发
ES6新特性(四): Set 和 Map
ES6新特性(四): Set 和 Map
|
23天前
|
存储 Java 索引
|
2月前
|
C++ 容器
【C++】map和set封装
【C++】map和set封装
28 2
|
2月前
|
存储 C++ 容器
【C++】map和set深度讲解(下)
【C++】map和set深度讲解(下)
49 2
|
2月前
|
存储 自然语言处理 Java
【C++】map和set深度讲解(上)
【C++】map和set深度讲解(上)
31 2
|
2月前
|
存储 JavaScript 前端开发
JavaScript编码之路【ES6新特性之 Symbol 、Set 、Map、迭代器、生成器】(二)
JavaScript编码之路【ES6新特性之 Symbol 、Set 、Map、迭代器、生成器】(二)
37 1