JavaScript的split函数在IE中无法工作

5

我正在使用JavaScript中的split函数。在Firefox和Chrome中工作正常,但是在IE中调用split函数时会出现错误。有没有其他类似split的函数可以使用?


6
需要查看你的代码以及出错信息吗? - kinakuta
5
它确实支持,可能是你代码中其他地方出了问题。请发布你的代码,让我们看看。 - Shadow The Spring Wizard
我们会尽快回复您,只要您能够粘贴代码。请在粘贴后选择您的代码,然后点击带有 {} 的按钮。 - mplungjan
你正在测试哪个版本的IE?(这很重要,因为在旧版本的IE中存在split()的错误) - Spudley
在一些较旧版本的IE中,如果您分割一个字符串,并且分隔符字符紧挨在一起,它将不会返回空元素。例如 "x||y".split('|') 会返回一个只有两个结果 "x" 和 "y" 的数组,而不是三个。我相信这是IE6造成的问题;我已经没有IE6的副本来验证这一点,但我记得几年前遇到过这个问题直到我发现了这个漏洞。 - Spudley
好的。谢谢。有趣,因为自1996年以来我从未遇到过任何与split相关的错误 :) - mplungjan
3个回答

7

split方法

该方法在IE8中完全支持。

JScript 5.6的split方法

该方法在IE6中也完全支持。

实时示例,使用.split(/\s+/)

在IE9标准模式、IE9 IE8模式、IE9 IE7模式和IE9怪异模式下进行了测试。都能正常工作。

编辑:

事实证明,你的实际问题是使用.textContent。这在IE中不起作用。有两个替代方案。

特性检测:

var str;
if (el.textContent) {
  str = el.textContent;
} else {
  str = el.innerText;
}

.nodeValue:

var str = el.nodeValue;


我理解我的问题,我使用了这段代码textContent.split(/\s+/);。所以textContent在Firefox和Chrome中可以工作,但在IE中无法工作。解决方案是使用innerText,但它在Firefox中无法工作,那么是否有其他解决方案呢? - V_B
1
@VbPatel 是的,不支持使用 .textContent。请使用 .nodeValue - Raynos

1

当你使用数字而不是字符串进行拆分时,Javascript会抛出“对象不支持此属性”的错误。

确保在变量中包含字符串值。


0

在处理字符串分割时,IE 9 及以下版本与大多数其他浏览器至少存在一个差异 -

var s='在某些浏览器中,您可以使用括号分隔符“split”字符串,并将“分离的”位返回到数组中。';

s.split(/( ?['"] ?)/).join('\n')

/***************************************************/
Firefox 4.0.1>>
 In some browsers, you can
 "
split
" 
a  string on a parenthized delimeter and return the
 "
split-off
" 
bits in the array.
/***************************************************/    
MSIE 8.0>>
 In some browsers, you can
split
a  string on a parenthized delimeter and return the
split-off
bits in the array.
/***************************************************/    
MSIE 9.0>>
 In some browsers, you can
 "
split
" 
a  string on a parenthized delimeter and return the
 "
split-off
" 
bits in the array.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接