js为什么不起作用?
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div>abc</div>
<div>asdf</div>
<div>qwer</div>
<div>asdw</div>
<script>
$("div:contains('a')").css("text-decoration", "underline");
</script>
</body>
</html>
这样有效果,但是把《script》写到《head》里面就没用了,为什么?
-------------------------------
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>/////写到这里就没用了。。。
$("div:contains('a')").css("text-decoration", "underline");
</script>
</head>
<body>
<div>abc</div>
<div>asdf</div>
<div>qwer</div>
<div>asdw</div>
</body>
</html> 展开
你的js代码要想运行有效,必须满足两个条件:一、jQuery必须加载完毕;二、页面的DOM结构必须加载完毕。如果把代码放到head,那么这时候jQuery和你的代码几乎是同时加载的,当你的代码运行时,jQuery很可能尚未加载完毕,这样条件一就很可能不满足;其次,这时候HTML的body尚未加载,这样条件二也不满足,所以代码运行无效。如果把代码放到body中所有标签的最后面,当你的代码运行时,jQuery和DOM都肯定已加载完毕,所以是有效的。
其实把你的js代码放到head中也是可以的,但必须放到load事件函数中,即这样:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(function(){
$("div:contains('a')").css("text-decoration", "underline");
});
</script>
</head>
<body>
<div>abc</div>
<div>asdf</div>
<div>qwer</div>
<div>asdw</div>
</body>
</html>
1、js文件路径错误,没有正确引入
2、js和dom节点加载顺序错误,在dom节点还没加载完之前操作了dom节点,导致报错
3、js代码错误
以上错误都可以通过浏览器调试,看具体报哪类错误。
script里面的代码改为
$(function(){
$("div:contains('a')").css("text-decoration", "underline");
})
这样就可以了