SVG或HTML文件中JS代码提示 Uncaught TypeError: Cannot read properties of null (reading ‘setAttribute‘)

本文讲述了在SVG或HTML中使用JS代码时遇到的错误,即提前访问未加载完成的DOM元素。给出了两种解决方案:一是将JS代码放入window.onload事件处理函数中,二是确保JS代码在所有DOM元素加载后执行。
摘要由CSDN通过智能技术生成

现象

在SVG文件或HTML文件中进行JS代码开发的时候,会碰到这种情况:明明在SVG文件中已经创建了某个对象,但JS代码中通过Id获取该对象,并对该对象的属性进行设置的时候会提示错误(该错误可以在浏览器中按F12—console/控制台 查看)。

const path = document.getElementById('pathcurve');
let d = 'M' + xData_curve[0] + ',' + yData_curve[0]; 
path.setAttribute('d', d); 

原因分析

这是因为在SVG或HTML文件中执行JS代码的时候,DOM元素还未完全加载,此时就在JS代码中试图访问它,就会出现这个问题。

解决方案

1、可以尝试将JS代码放到Windows.onload事件处理函数中进行处理,如代码所示

window.onload = function() {
  let path = document.getElementById('pathcurve');
  if (path ) {
    path .setAttribute('d', 'd');
  } else {
    console.error('Element with id "path " not found');
  }
}

2、简单的方法,就是将JS代码放到整个SVG或HTML文件的底部,确保上方的DOM元素都加载完成再执行JS代码。注意,后期通过SVG或HTML编辑软件增加元素的时候,元素会默认放在文件的底部,注意调整JS代码的顺序。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值