Uncaught TypeError Cannot set properties of undefined (setting ‘innerHTML‘)的错误

错误出现的前提:

页面中的Table每一行有一个删除按钮,当删除此行数据之后,需要对序号的值进行动态的更新(在另一篇文章中)。

当执行了删除操作 -> 再次添加新的数据 ->执行删除操作的时候就会出现标题中的错误。

解决方向:

思路一:加载时

由于页面加载顺序为:结构>样式>行为(html>css>JavaScript)。

如果js部分写到了页面内容的前面,那么在加载的时候,浏览器的加载顺序(错误顺序)是js>html,所以就有可能报标题中的错误。

解决办法一:

将js挪到最下面就好啦!

但是我的js确实是写在最下面的,所以并不是这种错误。

思路二:

既然可能是加载的问题,那会不会是我在删除tr之后,程序还未反应过来那是不可以让其等待一段时间之后再进行序号的排序。

setTimeout(function(){
	sortOrder();
}, 3000);

但是经过实践证明,这种思想是错误的,因为我的程序这么简单,而且就算很大也不会有延迟吧。

思路三:

在经过长时间的百度百度百度…依旧没有解决之后。在网页中随意点击table的源代码的时候,突然发现有一行tbody中有一行空白的tr,这是为什么呢

原因:我的模块是当重新进行选人员之后,点击确定之后会先删除掉原来的table中所有的信息,再将挑选的人员信息添加到table中。

使用的代码:

//该方式只是将内容清空,但是并不会删除tr
//会有一个空白的tr
$(".table-bordered  tr:not(:first)").html("");
//该方式就会将其table中的tr删除掉而不是清空
$(".table-bordered  tr:not(:first)").remove();
//两种方式都设定了不删除第一行也就是表头

由于一开始删除table中的行时,选错了方式,一直有一个空白行,所以也导致了程序会给空白行指定单元格添加序号,但是由于是空白行没有td,所以导致了报错。

换成了第二种删除方法,就不会有空白的tr了,问题也随之解决了。

所以出现这个错误也不一定都是数据加载的问题,还有这种隐藏的小问题。emmmmm…以后再写会注意的!

上一篇:win10激活改企业版方法


下一篇:Qt4——精彩实例分析4