js在html中的加載01

今天學習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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章