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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值