Uncaught TypeError TypeError: Cannot set properties of null (setting ‘onclick‘)的解决办法

这篇具有很好参考价值的文章主要介绍了Uncaught TypeError TypeError: Cannot set properties of null (setting ‘onclick‘)的解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我下面用代码示例一下。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>javascript之鼠标事件之按钮控制改变div盒子的背景颜色</title>
    <style>
        div{
            width: 200px;
            height: 200px;
            border: 1px red solid;
            background-color: red;
        }
    </style>
    <script>
       
      var  b=document.getElementById("an");
           b.onclick=function(){
           b.style.background="#ffefa1";
        };
    </script>
</head>
<body>
    <div id="an">可以试一下</div>
    
</body>

</html>

报错原因

这个代码你读一下,好像可以实现我们想要的效果,实现点击相关的div盒子实现其背景颜色变颜色的效果,但是一运行下来,在调试控制台里就会出现Uncaught TypeError TypeError: Cannot set properties of null (setting 'onclick')这样的报错------未捕获的类型错误: 无法设置属性

意思就是,无法获取到dom节点,从而导致无法对dom节点进行相关的操作,即无法设置相关dom节点的属性。

那又为什么不能获取dom节点呢?我不是写了 这个获取相关标签dom节点的js代码吗?

var  b=document.getElementById("an");

这就跟我们怎么在 HTML 中引入 JavaScript有关了,

那么我们怎么在 HTML 中引入 JavaScript 呢?🤔

引入方式与 CSS 相似,有以下三种方式:

  • 在 HTML 标签中直接引入,针对一些特别简短的 JavaScript 代码。

  • 使用 script 标签可以将 JavaScript 代码嵌入到 HTML 文档的 headbody 里。

  • 使用外部 JavaScript 文件,将 JavaScript 脚本代码写入一个后缀为 .js 的文件中,通过给 script 标签设置 src 属性的方式,引入这个文件。

我们这个例子的代码是在head标签里面引入 JavaScript 代码,html中的代码是编译一行就执行一行,我们已经在前面把 JavaScript这个代码已经使用完了,到后面执行html代码后,就没有这个javascipt代码了,所以就没有实现那个我们想要的javascipt代码的效果,。

解决办法:

思路一,既然是因为body标签后面没有javascipt代码,才导致的执行相关的操作,那就把相应的javascipt代码放在body标签后面就行了,例如:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>javascript之鼠标事件之按钮控制改变div盒子的背景颜色</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            border: 1px red solid;
            background-color: red;
        }
    </style>

</head>

<body>
    <div id="an">可以试一下</div>

</body>
<script>

    var b = document.getElementById("an");
    b.onclick = function () {
        b.style.background = "#ffefa1";
    };
</script>

</html>

思路二,我们可以使用window.onload() 这个方法,

window.onload() 方法用于在网页加载完毕后立刻执行的操作,即当 HTML 文档加载完毕后,立刻执行某个方法。

window.onload() 通常用于 <body> 元素,在页面完全载入后(包括图片、css文件等等)执行脚本代码。

使用window.onload()这个方法,就不用考虑javascript代码的位置了,因为使用window.onload(),只要网页加载完,就会触发相应的效果,例如,文章来源地址https://www.toymoban.com/news/detail-430749.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>javascript之鼠标事件之按钮控制改变div盒子的背景颜色</title>
    <style>
        div{
            width: 200px;
            height: 200px;
            border: 1px red solid;
            background-color: red;
        }
    </style>
    <script>
        window.onload=function(){
      var   b=document.getElementById("an");
        b.onclick=function(){
            b.style.background="#ffefa1";
        };};
    </script>
</head>
<body>
    <div id="an">可以试一下</div>
    <button >点击</button>
</body>
</html>

到了这里,关于Uncaught TypeError TypeError: Cannot set properties of null (setting ‘onclick‘)的解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Uncaught TypeError: Cannot read properties of null (reading ‘style‘)

    Uncaught TypeError: Cannot read properties of null (reading \\\'style\\\') 2:报错的原因 文档的加载过程是自上向下加载。使用未命名的变量、会报错 3;解决办法 1、将Javascript代码从标签中放入body中 2、 window.onload = function(){}框起来

    2024年02月15日
    浏览(28)
  • easyui Uncaught TypeError: Cannot read properties of null (reading ‘width‘)

    问题描述 在将easyui1.3.6版本替换为1.7版本的时候。只有表头显示出来了,内容并没有显示出来,且报异常。表头也没有按照期望的宽度正常显示。错误提示如下 问题原因及解决办法 该问题出现的原因是因为该表格的表头涉及到跨行跨列问题,原因是最后一栏出货记录的跨列

    2024年02月16日
    浏览(36)
  • 错误解决:Uncaught TypeError: Cannot read properties of null (reading ‘XXX‘).

    报错信息: 前端代码:        这里的目的是打开特定页面后,自动将用户登录后 session 中保存的 username 取出并将值赋给input标签。        但是在测试的时候,打开该页面控制台就出现报错。报错意思大概就是你需要的这个 “username” 属性的值本来就是空的,所以无法获

    2024年02月12日
    浏览(52)
  • Uncaught TypeError: Cannot read properties of null (reading ‘name‘) 和NoSuchMethodException

    分析:这是由于还没登录,data.name 还没获取到值,所以为null 方法1:可以不管,它不会影响其他功能,当你登录后,便不会报这个错 方法2:给它一个if判断是否为null 修改前: 修改后: 修改完后记得先清楚浏览器缓存(或换个浏览器)再测试。成功解决! 还有一个问题是缺

    2024年02月12日
    浏览(33)
  • Uncaught (in promise) TypeError: Cannot read properties of null (reading ‘brands)

    在写vue项目时我们经常会遇见这种报错, 报错: Uncaught (in promise) TypeError: Cannot read properties of null (reading \\\'brands\\\') 这句话意思是:无法读取null属性(读取\\\'brands\\\')  解决办法是在需要渲染的地方加一个v-if来判断数据存在 如下图 搞定!! 

    2024年02月11日
    浏览(37)
  • vue3报错 Uncaught TypeError: Cannot read properties of null (reading ‘isCE‘) at renderSlot

    最近在vue项目中遇到如下报错,项目使用的是vue3+webpack搭建的 造成这个的原因是有两个不同的vue版本, 就可能下载的其他的第三方和当前的vue版本不相同, 就有两个vue的副本,在引入的时候, npm去尝试引入的地址不对 有如下几种解决方案 由于npm的引入地址不对, 那我们使

    2023年04月27日
    浏览(57)
  • vue 启动项目报错:TypeError: Cannot set property ‘parent‘ of undefined异常解决

    场景:从git上面拉下来一个项目 npm i 下载完依赖以后 npm run serve 去运行项目的时候 报错TypeError: Cannot set property ‘parent’ of undefined 如图所示 原因:首先排查发现判断得出是less解析失败导致 但是经过长时间的查询解决方案发现是因为vue版本在下载包的过程中由2.6.10升级为2

    2024年02月12日
    浏览(43)
  • Uncaught TypeError:Cannot read properties of null (reading ‘isCE‘) at Cc (1cl-test-ui.mjs:1564:9)

    ❤️砥砺前行,不负余光,永远在路上❤️ 组件发布之后使用可能会遇到报错,错误信息:Uncaught TypeError:Cannot read properties of null (reading ‘isCE’) at Cc (1cl-test-ui.mjs:1564:9) 在vite.config.js中添加代码 完整的vite.config.js 参考:https://www.bilibili.com/video/BV1s5411U7sd

    2024年02月15日
    浏览(40)
  • 关于微信小程序没定义query却还报错TypeError: Cannot set property ‘query‘ of undefined

    最开始以为 #ifndef 和 #endif  这是注释  看见下面写了个vue3,把这个vue3改成了vue2, 然后然后最重要的是,改了自己又忘了自己改了这里,折磨了不知道多了多少minutes,又记起来了,然后就解决啦~~~~ 然后查了一下这是啥意思,发现这是一种预处理指令 ifdef = if define 意思是如

    2024年02月14日
    浏览(47)
  • Uncaught TypeError: Cannot read properties of undefined (reading ‘use‘)

    报错:Uncaught TypeError: Cannot read properties of undefined (reading ‘use’) 原因:Vue-router版本问题,在vue-router3可在router/index.js中安装router插件,但4不支持 解决: 1、在router/index.js中,导出{createRouter, createWebHistory}两个函数 使用createRouter来创建路由对象 使用createWebHistory函数赋值给histor

    2024年02月13日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包