script代码在head内无法执行,会报错的原因是你的DOM元素还未生成,当浏览器下载完js时发现为空就不会再向下执行body,而html页面是在执行了body之后才会显示。
javascript本身就是单线程的,在没有使用两个属性(async和defer)的情况下,只要吧script代码块放到body下面就可以正常执行。
参考下面的代码
<html lang="en">
<head>
<title>九九乘法表</title>
<style>
table {
border-collapse: collapse;
}
table td {
border: 1px solid #ccc;
padding: 3px 6px;
}
</style>
</head>
<body>
<table id="abc">
</table>
<script>
var table = "";
for (let i = 0; i < 9; i++) {
var line = "<tr>";
for (let j = 0; j < i + 1; j++) {
line += "<td>" + (j + 1) + "*" + (i + 1) + "=" + ((j + 1) * (i + 1)) + "</td>";
}
line += "</tr>";
table += line;
}
document.getElementById("abc").innerHTML = table;
</script>
</body>
</html>
代码执行之后正确输出九九乘法表