js为什么不起作用?

看下这段代码:<!DOCTYPEhtml><html><head><scriptsrc="http://code.jquery.com/jquery-latest.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>
展开
 我来答
网海1书生
科技发烧友

2021-07-21 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部

你的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>

AI金融机器人
2013-04-18 · 专注数字货币自动化交易,自动适应市场变化
AI金融机器人
采纳数:30 获赞数:166

向TA提问 私信TA
展开全部
写在head中时,dom元素还没有解析完全,就照成不存在div这个了,你那个语句没作用,当你写在下面时dom元素解析完全了,所以有作用。写在head中时通常jquery会用$.ready() 写在这个里面,意思是等页面加载完全后再执行。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
woshidaniel
2015-09-08 · TA获得超过9240个赞
知道小有建树答主
回答量:1760
采纳率:96%
帮助的人:954万
展开全部
错误有以下几个:
1、js文件路径错误,没有正确引入
2、js和dom节点加载顺序错误,在dom节点还没加载完之前操作了dom节点,导致报错
3、js代码错误
以上错误都可以通过浏览器调试,看具体报哪类错误。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2021-07-23 · 超过21用户采纳过TA的回答
知道答主
回答量:183
采纳率:60%
帮助的人:14.6万
展开全部
这个应该是dom加载的问题,你可以使用jQuery的DOM加载完成的方法来实现
script里面的代码改为
$(function(){
$("div:contains('a')").css("text-decoration", "underline");
})
这样就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LP_Vigorous
2015-08-19 · TA获得超过543个赞
知道小有建树答主
回答量:708
采纳率:0%
帮助的人:169万
展开全部
利用开发者工具,打断点js,看看程序是不是进入js了,如果进入了,还不起作用,那个就是你js写错了,仔细检查一下,如果断点都没进入js,那就是你js引入的问题,在仔细检查一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式