JS控制台显示cannot read property ‘getElementsByTagName‘ of null怎么办
事件说明:
自己动手写了个js,运行,控制台报错:
-
<!DOCTYPE html>
-
<html>
-
<head>
-
<meta charset="utf-8">
-
<title>全选</title>
-
<script>
-
var cbAll = document.getElementById("cbAll");
-
var tbs = document.getElementById("tb").getElementsByTagName("input");
-
cbAll.onclick=function(){
-
console.log(cbAll.checked);
-
for(var i = 0;i < tbs.length;i ){
-
tbs[i].checked=cbAll.checked;
-
}
-
}
-
-
for (var i = 0;i < tbs.length;i ){
-
tbs[i].onclick=function(){
-
var flag=true;
-
for (var i = 0;i < tbs.length;i ){
-
if(!tbs[i].checked){
-
flag = false;
-
}
-
}
-
cbAll.checked=flag;
-
}
-
}
-
-
</script>
-
</head>
-
<body>
-
<table class="box">
-
<thead>
-
<tr>
-
<th><input type="checkbox" id="cbAll" ></th>
-
<th>价格</th>
-
<th>商品</th>
-
</tr>
-
</thead>
-
<tbody id="tb">
-
<tr>
-
<td>
-
<input type="checkbox">
-
</td>
-
<td>
-
30
-
</td>
-
<td>
-
荔枝
-
</td>
-
</tr>
-
<tr>
-
<td>
-
<input type="checkbox">
-
</td>
-
<td>
-
29
-
</td>
-
<td>
-
哈密瓜
-
</td>
-
</tr>
-
<tr>
-
<td>
-
<input type="checkbox">
-
</td>
-
<td>
-
28
-
</td>
-
<td>
-
苹果
-
</td>
-
</tr>
-
</tbody>
-
</table>
-
</body>
-
</html>
查了一下,很多网友说是因为导航栏部分没有设置id导致。
后来发现是script放在了head中,如果没有设置window.onload,那么JS在html加载之前就会被解析,相应的就取不到html中的元素了。所以把js相关代码放到相关html后面就好了。
-
<!DOCTYPE html>
-
<html>
-
<head>
-
<meta charset="utf-8">
-
<title>全选</title>
-
-
</head>
-
<body>
-
<table class="box">
-
<thead>
-
<tr>
-
<th><input type="checkbox" id="cbAll" ></th>
-
<th>价格</th>
-
<th>商品</th>
-
</tr>
-
</thead>
-
<tbody id="tb">
-
<tr>
-
<td>
-
<input type="checkbox">
-
</td>
-
<td>
-
30
-
</td>
-
<td>
-
荔枝
-
</td>
-
</tr>
-
<tr>
-
<td>
-
<input type="checkbox">
-
</td>
-
<td>
-
29
-
</td>
-
<td>
-
哈密瓜
-
</td>
-
</tr>
-
<tr>
-
<td>
-
<input type="checkbox">
-
</td>
-
<td>
-
28
-
</td>
-
<td>
-
苹果
-
</td>
-
</tr>
-
</tbody>
-
</table>
-
-
<script>
-
var cbAll = document.getElementById("cbAll");
-
var tbs = document.getElementById("tb").getElementsByTagName("input");
-
cbAll.onclick=function(){
-
console.log(cbAll.checked);
-
for(var i = 0;i < tbs.length;i ){
-
tbs[i].checked=cbAll.checked;
-
}
-
}
-
-
for (var i = 0;i < tbs.length;i ){
-
tbs[i].onclick=function(){
-
var flag=true;
-
for (var i = 0;i < tbs.length;i ){
-
if(!tbs[i].checked){
-
flag = false;
-
}
-
}
-
cbAll.checked=flag;
-
}
-
}
-
-
</script>
-
-
</body>
-
</html>
也可以不改顺序,通过设置window.onload 来运行。设置window.onload 的作用是:使js代码在确保页面加载完成后再进行
-
<!DOCTYPE html>
-
<html>
-
<head>
-
<meta charset="utf-8">
-
<title>全选</title>
-
-
<script>
-
window.onload=function(){
-
var cbAll = document.getElementById("cbAll");
-
var tbs = document.getElementById("tb").getElementsByTagName("input");
-
cbAll.onclick=function(){
-
console.log(cbAll.checked);
-
for(var i = 0;i < tbs.length;i ){
-
tbs[i].checked=cbAll.checked;
-
}
-
}
-
-
for (var i = 0;i < tbs.length;i ){
-
tbs[i].onclick=function(){
-
var flag=true;
-
for (var i = 0;i < tbs.length;i ){
-
if(!tbs[i].checked){
-
flag = false;
-
}
-
}
-
cbAll.checked=flag;
-
}
-
}
-
}
-
</script>
-
</head>
-
<body>
-
<table class="box">
-
<thead>
-
<tr>
-
<th><input type="checkbox" id="cbAll" ></th>
-
<th>价格</th>
-
<th>商品</th>
-
</tr>
-
</thead>
-
<tbody id="tb">
-
<tr>
-
<td>
-
<input type="checkbox">
-
</td>
-
<td>
-
30
-
</td>
-
<td>
-
荔枝
-
</td>
-
</tr>
-
<tr>
-
<td>
-
<input type="checkbox">
-
</td>
-
<td>
-
29
-
</td>
-
<td>
-
哈密瓜
-
</td>
-
</tr>
-
<tr>
-
<td>
-
<input type="checkbox">
-
</td>
-
<td>
-
28
-
</td>
-
<td>
-
苹果
-
</td>
-
</tr>
-
</tbody>
-
</table>
-
</body>
-
</html>
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhkikgb
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22