js代碼Uncaught TypeError: Cannot set properties of null (setting ‘innerHTML‘)問題解決

        在編寫一個html時,想要實現js中處理的數據輸出並顯示在瀏覽器的表格中,然後再寫完代碼後,報錯Uncaught TypeError: Cannot set properties of null (setting ‘innerHTML’);

        Cannot set properties of null (setting ‘innerHTML’),這個報錯的意思是無法讀取null的屬性“innerHTML”,即表示找不到你想要將所寫的HTML代碼插入的地方。

        原因:瀏覽器加載HTML文檔時,會將HTML文檔解析為一個樹形結構,稱為DOM樹,代碼的執行順序是自上而下依次執行,當執行到innerHTML這一行代碼時,他並沒有加載到下面的DOM結構,就會報錯無法讀取HTML。

        解決辦法:將DOM的讀取部分的script放在body後面。或者在script標簽中添加window.onload,等頁面加載結束後再執行這一部分代碼。

示例:

Document*{margin: 0;padding: 0;}div{font-size: 14px;width: 200px;height: auto;margin: 50px auto; }table{text-align: center;border-collapse:collapse;}table,tr,td,th{border: 1px solid #ccc;}#t1 tr:nth-child(even){color:red;}th{font-weight: bold;}<!-- var stuNum = 7;var stuSoc = new Array();var sum = 0;var std = 0;var notPassNum = 0;for (var i = 0; i < stuNum; i++) {stuSoc[i] = prompt("請輸入7個學生中第"+(i+1)+"個學生成績分數:");sum += parseInt(stuSoc[i]);if (stuSoc[i] < 60) {notPassNum++;}}std = parseFloat(sum/stuNum).toFixed(3);alert("總分:"+sum+","+"平均成績:"+std+","+"不及格人數:"+notPassNum);for (var i = 0; i < stuNum; i++) {document.getElementById(i).innerHTML = stuSoc[i];}document.getElementById("sum").innerHTML = sum;document.getElementById("std").innerHTML = std;document.getElementById("notPassNum").innerHTML = notPassNum; -->
序號分數
1
2
3
4
5
6
7

統計項數值
總分
平均成績
不及格人數
var stuNum = 7;var stuSoc = new Array();var sum = 0;var std = 0;var notPassNum = 0;for (var i = 0; i < stuNum; i++) {stuSoc[i] = prompt("請輸入7個學生中第"+(i+1)+"個學生成績分數:");sum += parseInt(stuSoc[i]);if (stuSoc[i] < 60) {notPassNum++;}}std = parseFloat(sum/stuNum).toFixed(3);alert("總分:"+sum+","+"平均成績:"+std+","+"不及格人數:"+notPassNum);for (var i = 0; i < stuNum; i++) {document.getElementById(i).innerHTML = stuSoc[i];}document.getElementById("sum").innerHTML = sum;document.getElementById("std").innerHTML = std;document.getElementById("notPassNum").innerHTML = notPassNum;

結果:

 

本文來自網絡,不代表程式碼花園立場,如有侵權,請聯系管理員。https://www.codegarden.cn/article/28994/
返回顶部