innerHTML为null由于js&html加载顺序的坑

今天初学JavaScript和html,就直接踩坑了,很是郁闷,写一个乘法口诀表就写了一下午,纠结了一下午为什么innerHTML总是为空,后来算是解决了,原来就是js加载顺序的原因


**错误**html代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script type="text/javascript" src="js/index.js"></script>
    </head>
    <body>
        <button >生成乘法口诀表</button>   
        <table id="table1" border="1" ">    
            <caption><h2>欢迎前来学习小学三年级乘法口诀表</h2></caption>    
        </table>        
    </body>
</html>

**错误**js代码

var strCode = "";
for (var i = 1; i<=9; i++) {
    strCode = strCode + "<tr>";
    for (var j = 1; j<=i; j++) {
        var temp = "<td>" + j + "*" + i + "=" + (i*j) + "</td>";
        strCode = strCode + temp;
    }
    strCode = strCode + "</tr>";
}
strCode = strCode + "";

console.log(strCode);

document.getElementById("table1").innerHTML+=strCode;

错误结果:

"Uncaught TypeError: Cannot read property 'innerHTML' of null"


错误原因:

详情注释在了图中↓↓↓。


最终正确的代码:

html代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script type="text/javascript" src="js/index.js"></script>
    </head>
    <body>
        <button onclick="setTable()">生成乘法口诀表</button>   
        <table id="table1" border="1" style="display: none;">   
            <caption><h2>欢迎前来学习小学三年级乘法口诀表</h2></caption>    
        </table>        
    </body>
</html>

js代码:

var strCode = "";
for (var i = 1; i<=9; i++) {
    strCode = strCode + "<tr>";
    for (var j = 1; j<=i; j++) {
        var temp = "<td>" + j + "*" + i + "=" + (i*j) + "</td>";
        strCode = strCode + temp;
    }
    strCode = strCode + "</tr>";
}
strCode = strCode + "";

console.log(strCode);

var flag = true;

function setTable () {
    if(flag == true){
        flag = false;
        document.getElementById("table1").innerHTML+=strCode;
        document.getElementById("table1").style.display = "block";
    }

}

结果:

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值