[英]Error coming as “Cannot set property 'innerHTML' of null”
我正在從Javascript生成html表,並將其作為InnerHTML分配給div標簽,但它給出了錯誤:
“未捕獲的TypeError:無法將屬性'innerHTML'設置為null”
<html>
<body>
<div class="fieldlist-vertical-title" style="color:white;left:0px;display:none;" id="rosterlegend">Some text</div>
<script>
function generateLegend()
{
var fullTable ='' fullTable='<Table><TR><Table><TR bgcolor=#FF5733><TD>MM</TD>
<TD>01:00 to 21:30</TD></TR></Table></TR></Table>'
document.getElementById('rosterlegend').innerHTML = fullTable
}
generateLegend();
</script>
</body>
</html>
錯誤:未被捕獲的TypeError:無法將屬性'innerHTML'設置為null
嘗試更改為類似的內容,因此我們確保HTML DOM首先完成加載。
使用ES6模板字符串而不是普通字符串!
document.addEventListener('DOMContentLoaded', () => { generateLegend(); }); function generateLegend() { fullTable = `<Table> <TR> <Table> <TR bgcolor=#FF5733> <TD>MM</TD> <TD>01:00 to 21:30</TD> </TR> <TR bgcolor=#FFFFFF> <TD>EVVV</TD> <TD>09:00 to 05:30</TD> </TR> </Table> </TR> </Table>`; document.getElementById('rosterlegend').innerHTML = fullTable; }
<div id="rosterlegend"> <div>
刪除HTML字符串中的新行和多余的空格。
您的其余代碼工作正常! 但是,這不是神的做法。 理想情況下,您必須等待窗口加載。
window.onload(){
generateLegend();
}
function generateLegend() { var fullTable = " <Table><TR><Table><TR bgcolor=#FF5733><TD>MM</TD><TD>01:00 to 21:30</TD></TR><TR bgcolor=#FFFFFF><TD>EVVV</TD><TD>09:00 to 05:30</TD></TR></Table></TR></Table>"; document.getElementById('rosterlegend').innerHTML = fullTable; } generateLegend();
<div id="rosterlegend">Some text</div>
您的問題是,您在加載DOM之前嘗試使用id
為“ rosterlegend”訪問div。 這意味着當您的JavaScript嘗試訪問您的元素時,它就無法訪問。 解決此問題的一種方法是將load
或DOMContentLoaded
事件偵聽器添加到元素中,在HTML(如果使用load
事件,包括圖像)和窗口加載后,該函數將觸發。 這樣,您的JavaScript就會知道您的HTML。
請參見下面的工作示例:
function generateLegend() { var fullTable = " <Table><TR><Table><TR bgcolor=#FF5733><TD>MM</TD><TD>01:00 to 21:30</TD></TR><TR bgcolor=#FFFFFF><TD>EVVV</TD><TD>09:00 to 05:30</TD></TR></Table></TR></Table>"; document.getElementById('rosterlegend').innerHTML = fullTable; } window.addEventListener("load", generateLegend); // call your function when the window has loaded
<div id="rosterlegend"></div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.