js遇到的Uncaught TypeError: Cannot set property 'onclick' of null at HTMLButtonElement.add.onclick错

本文探讨了JavaScript代码在HTML文档中的执行时机问题,并提供了两种解决方案:使用窗口加载事件或者将脚本放置于文档末尾。此外,还介绍了一个表格操作的例子,包括如何动态添加行及响应删除操作。

第一个是因为:js写在了body前面,写在了head前面,,这种有两种解决办法:第一:在<script></script>外面包裹一个入口函数:window.onload=function(){}

第二:把<script></script>放在body的最后

第二个是因为:定义了按钮空值

代码如下:

html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin: 0px ;
padding: 0px;
}
table{
border: 1px solid #000;
border-collapse: collapse;
}
td{
border: 1px solid #000;
height: 50px;
width: 200px;
text-align: center;
line-height: 50px;
box-sizing: border-box;




}
td:nth-of-type(4n){
color: red;
cursor: pointer;
}
</style>
</head>
<body>


姓名:<input type="text"  id="name">
班级:<input type="text" id="banji">
<button id="add">新增</button>
<button id="delete">删除</button>


<table>
<tr id="hang">
<td>选择</td>
<td>姓名</td>
<td>班级</td>
<td>删除</td>
</tr>
</table>


<script src="作业.js"></script>
</body>
</html>


js代码:

function $(idname){
return document.getElementById(idname);
}
var add=$('add');
add.onclick=function(){
var name=$('name').value;
var banji=$('banji').value;
/* while(name[0]==' '){
name.substring(1,name.length)
}
while(banji[0]==' '){
banji.substring(1,banji.length)
}
if(name=''){
alter('请输入姓名')
}

if(banji=''){
alter('请输入班级')
}
else{*/
var radio=document.createElement('input')
radio.type='radio';
var tr=document.createElement('tr')
var td1=document.createElement('td')
var td2=document.createElement('td')
var td3=document.createElement('td')
var td4=document.createElement('td')
td1.appendChild(radio)

tr.appendChild(td1);
tr.appendChild(td2);
tr.appendChild(td3);
tr.appendChild(td4);
document.body.appendChild(tr);
td1.innerHTNL=radio;
td2.innerHTML=name;
td3.innerHTML=banji;
td4.innerHTML='删除'

/*}*/
var shanchu=$('td4');
shanchu.onclick=function(){
this.parentNode.parentNode.removeChild(this.parentNode);

}


}

var shanchu=$('td4');是一个空值,把var shanchu去掉

把shanchu该为td4就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值