关于简单jQuery的IE错误

时间:2010-05-25 09:01:20

标签: javascript jquery internet-explorer internet-explorer-8

  

有关错误的详细信息

     

Useraget:Mozilla / 4.0   (兼容; MSIE 8.0; Windows NT 5.1;   三叉戟/ 4.0; .NET CLR 1.1.4322;   InfoPath.1; .NET CLR 2.0.50727; 。净   CLR 3.0.04506.30; .NET CLR   3.0.4506.2152; .NET CLR 3.5.30729)Tiemstamp:2010年5月25日星期二   08:54:11 UTC

     

消息:对象不支持   此属性或方法行:208   字符:3代码:0

在第208行,我有perpage = $("#perpage").val();

这里有什么问题?它只发生在IE8中,Firefox运行得很完美。 有人有任何想法吗?

2 个答案:

答案 0 :(得分:2)

问题似乎是我的 JavaScript变量元素ID 的名称相同。当我将变量重命名为 vperpage 时,它在IE中也能正常工作。

vperpage = $("#perpage").val(); //Seem to work in Internet Explorer

任何可以在IE中确认这种奇怪行为的人吗?

编辑2010-05-25 13:57 GMT + 1

就像@bobince说的那样以及他发布的链接,如果我们不在JavaScript中声明变量,IE会将元素和变量看作同一个东西。

var perpage = $("#perpage").val(); /*Works in Internet Explorer */
perpage = $("#perpage").val(); /*Doesn't work in Internet Explorer since 
                               we already have a element with the id perpage*/

这可能令人困惑,因为如果我们给它一个值,JavaScript本身也会自动声明一个不存在的变量。但是,正如我们在上面的问题中注意到的那样,当我们已经有一个具有相同id的元素时,这不起作用。所以,不好的做法是不要总是声明自己的变量:)经验教训!

答案 1 :(得分:1)

标识为perpage的元素是否不是表单输入字段?如果是,您应该使用:

var perpage = $("#perpage").html(); // for html contents of the element
var perpage = $("#perpage").text(); // for textual contents of the element

如果您已将ID #perpage分配给多个元素,这也可能会出现问题。