IE不会用Javascript分割字符串

时间:2010-10-19 08:07:22

标签: javascript split

我有以下代码:

$('#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

3 个答案:

答案 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特定错误的问题。