问题描述
<script type="text/javascript" src="jquery-1.6.js"></script><script type="text/javascript" defer>alert($("#test").length);$(document).ready(function (){alert($("#test").length);});</script><body><input type="text" id="test" value="test" onclick="a()"/></body>上面的这段代码,只是我挑出来的一部分,我测试的时候在IE下面,都可以正常显示(两个alert都是输出1),但是换到火狐,chorme下面都是第一个输出0,第二个输出1. 因为项目中用到了直接进入到js代码就进行运算的操作,不是$(document).ready()之后再运行.求给解决方案. 还有这里加不加defer都是一样的结果! 已经纠结了一个晚上了!看了网上很多的文章,好像都是直接取都取不到值,都需要在$(document).ready()里面才能取到,难道没有解决方法了吗? 问题补充:suziwen 写道
解决方案
只有ie支持defer
解决方案二:
你用的ie几?我的ie7打印的是0,1.如果你想要1,1的结果可以把script放在后面执行:<script type="text/javascript" src="jquery-1.6.js"></script> <body> <input type="text" id="test" value="test" onclick="a()"/> <script type="text/javascript" > alert($("#test").length); $(document).ready( function (){ alert($("#test").length); }); </script> </body>
解决方案三:
能说出为什么 不放在ready的理由吗。感觉你都已经知道问题的原因了,也知道不同浏览器加载JS及执行方式的不同。还知道READY方法能屏蔽这些问题,什么 不用这个方法呢