今天學習js中發現這麼一件事,寫了如下代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>dom1</title>
<script type="text/javascript">
function fn(obj) {
alert(obj); -----------------後來加的打印
obj.className="selected"; -----------------報錯位置
}
</script>
<style>
.selected{
background-color: #ffee99;
}
</style>
</head>
<body>
<script type="text/javascript">
var obj=document.getElementById("i3");
alert(1);
</script>
<ul><li>item1</li>
<li>item2</li>
<li id="i3">item3</li>
<li>item4</li>
<li>item5</li>
</ul>
<a href="javascript:;" onclick="fn(obj);">當前節點</a>
</body>
</html>
剛開始在google瀏覽器中運營,一直報錯,顯示的是obj.className="selected"; 這句代碼有錯,剛開始一直不清楚哪出錯了,後來在程序中加了打印菜發現,在head標籤中的obj打印出來爲null。按照java的思維,不應該爲null的,obj我已經在body中給他賦值了。後面網上找了資料查看後才發現,瀏覽器在加載javascript時有2個特性:1.載入後馬上執行;2.執行時會阻塞頁面後續的內容。
當body中的javascript執行的時候,由於後面的內容被阻塞,i3這個值找不到,導致obj賦值失敗,所以瀏覽器會報錯;
解決辦法:直接把body中javascript這一段代碼放在a標籤後面,或者直接放到html標籤外面。
先寫這麼多,後面有新的學習心得再寫
參考鏈接:https://www.cnblogs.com/CBDoctor/p/3745246.html
https://coolshell.cn/articles/9749.html