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:;" οnclick="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



猜你喜欢

转载自blog.csdn.net/zpt912/article/details/79019039