我有以下代码:
$('#smallcart .plusone').live('click',function(){
var id = $(this).attr('id');
articlenr = id.split('_')[1];
});
这在FF,safari,Chrome中运行良好,但是在IE(7和8)中它会在分割函数上抛出错误(此对象不支持此属性或方法)。
如果我提醒“id”变量,我会得到类似plus_5751
的内容。 (所以我想得到'5751'部分)
如果我alert(typeof(id))
,我会String
作为答案......
也许有人可以指出我正确的答案?
THX
答案 0 :(得分:4)
split
在IE中运行良好。问题是等号左边的部分。它是一个对象,所有输入字段都具有名称articlenr
,因此当您尝试为其分配字符串时,IE将退出并且“此对象不支持此属性或方法”。
答案 1 :(得分:2)
您的代码在Internet Explorer中对我来说效果很好 - 正如它应该的那样。问题必须在其他地方,也许某些事情会覆盖 String.prototype.split ?您可以在http://jsfiddle.net/AndyE/6K77Y/查看代码的工作示例。要检查的第一件事是脚本中的任何Internet Explorer特定代码。
我会为效率做一个小改进。 $(this).attr('id');
几乎是写作this.id
的漫长道路。它的速度较慢,因为必须创建一个新的jQuery对象,然后必须运行 attr 函数。如果没有它,您的代码可以被压缩得更多,同时仍然保持可读性,如果您愿意:
$('#smallcart .plusone').live('click',function(){
articlenr = this.id.split('_')[1];
});
答案 2 :(得分:0)
尝试将变量'id'重命名为其他内容。当您在脚本中命名与DOM中的项目相同时,IE不喜欢它。
没关系,在这种情况下似乎不是问题。但是,我在过去遇到过由变量名引起的IE特定错误的问题。