为什么这个javascript不能在IE中工作,但可以在其他浏览器中工作?

为什么这个javascript不能在IE中工作,但可以在其他浏览器中工作?,javascript,Javascript,我讨厌IE与众不同的另一个原因。我有这个密码: var friends = document.getElementById('friendsEmail').value; ... var emailArray=new Array(); emailArray=String(friends).split(','); //error here 这适用于其他所有浏览器。事实上,我只添加了数组声明和显式字符串转换,以使其在IE中工作。但是,我仍然会遇到这个错误 网页错误详细信息 用户代理:Mozill

我讨厌IE与众不同的另一个原因。我有这个密码:

var friends = document.getElementById('friendsEmail').value;
...
 var emailArray=new Array();
 emailArray=String(friends).split(','); //error here
这适用于其他所有浏览器。事实上,我只添加了
数组
声明和显式
字符串
转换,以使其在IE中工作。但是,我仍然会遇到这个错误

网页错误详细信息

用户代理:Mozilla/4.0(兼容;MSIE8.0;WindowsNT5.1; Trident/4.0;.NET4.0C;.NETCLR2.0.50727;.NETCLR3.0.4506.2152; .NET CLR 3.5.30729;.NET4.0E;.NET CLR 1.1.4322)时间戳:2月1日星期三 2012年22:24:15 UTC


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

我不喜欢这件事的什么地方?我是不是在做一些我看不见的明显愚蠢的事情

编辑

这就是我最初导致IE错误的原因:

var emailArray=friends.split(',');
这也给了我IE中的错误

编辑2

对不起,伙计们。原来服务器正在缓存.js文件的旧副本,而我看到的错误行不正确。。。我很抱歉在这件事上浪费了你的时间。结果,错误发生在完全不同的线路上。对于那些好奇的人来说,这条线实际上是失败的

emailArray[count]=emailArray[count].trim();
不过我已经解决了这个问题。

split()
创建了自己的数组,所以省去了
emailArray=newarray()

你可以这么做

emailArray = document.getElementById('friendsEmail').value.split(",")
split()

你可以这么做

emailArray = document.getElementById('friendsEmail').value.split(",")

通常不建议使用基元类型的构造函数。您的
friends
变量中已经有一个字符串,所以只需拆分该字符串即可

改变

emailArray = String(friends).split(','); //error here


通常不建议使用基元类型的构造函数。您的
friends
变量中已经有一个字符串,所以只需拆分该字符串即可

改变

emailArray = String(friends).split(','); //error here


IE上的
Split
不是标准配置。我使用它进行跨浏览器拆分。

IE上的拆分
不是标准。我使用它进行跨浏览器拆分。

我强烈怀疑实际问题在于
文档。getElementById('friendsmail')。value
未定义的。您是否确实在尝试获取元素的文本内容?如果是这样,那么这是可行的:

var friends = document.getElementById("friendsEmail");
var emailArray = friends.innerText.split(",");
请注意,一个关于字符串文本的简单测试用例——如
“str,str1,str2”.split(“,”
)——将很快证明
split
不是问题所在。最好是把事情简化到最小的可测试单元。否则,您只是猜测错误的来源


演示:

我强烈怀疑实际问题在于
文档。getElementById('FriendsMail')。值
未定义。您是否确实在尝试获取元素的文本内容?如果是这样,那么这是可行的:

var friends = document.getElementById("friendsEmail");
var emailArray = friends.innerText.split(",");
请注意,一个关于字符串文本的简单测试用例——如
“str,str1,str2”.split(“,”
)——将很快证明
split
不是问题所在。最好是把事情简化到最小的可测试单元。否则,您只是猜测错误的来源


演示:

我认为您的代码没有问题。我认为您可能对正在检索的值有问题,
friends
不是您认为的那样。在这个JSFIDLE中,您可以看到您使用的一般概念在IE中起作用:

var friends = document.getElementById('friendsEmail').value;
var emailArray = friends.split(','); 
您可以看到它在这里工作:


所以,我认为问题在于如何找回你的价值。这一定不是您所认为的(有时可能是空的)。

我认为您的代码没有问题。我认为您可能对正在检索的值有问题,
friends
不是您认为的那样。在这个JSFIDLE中,您可以看到您使用的一般概念在IE中起作用:

var friends = document.getElementById('friendsEmail').value;
var emailArray = friends.split(','); 
您可以看到它在这里工作:


所以,我认为问题在于如何找回你的价值。这一定不是您认为的那样(有时可能为空)。

没有数组,我也会遇到同样的错误。在我注意到IE中的错误后,我添加了
数组
声明。这是真的,但与OP的问题无关。我在没有数组的情况下得到了相同的错误。在我注意到IE中的错误后,我添加了
数组
声明。这是真的,但与OP的问题无关。我最初这样做了,这也给了我错误。我只是在数组和字符串中添加了一些内容,看看这是否是问题所在。对象不支持此属性或方法:在IE8和IE7I中,我更新了我的问题。事实证明,这并没有真正失败。我看到了错误的错误行。我最初是这样做的,这也给了我错误。我只是在数组和字符串中添加了一些内容,看看这是否是问题所在。对象不支持此属性或方法:在IE8和IE7I中,我更新了我的问题。事实证明,这并没有真正失败。我看错了错误行。我确实看到了这个库并考虑了它。我想先尝试修复javascript,但最终我可能会使用它。Steven Levithan的
split()
替换很好,我建议使用它,但对于这种特殊情况,它是不必要的。IE在字符串而不是正则表达式上进行拆分时很好。我确实看到了这个库并考虑过它。我想先尝试修复javascript,但最终我可能会使用它。Steven Levithan的
split()
替换很好,我建议使用它,但对于这种特殊情况,它是不必要的。当在字符串上而不是正则表达式上拆分时,IE是可以的。因此,也许你可以删除“为什么我讨厌IE”这句话,因为它与IE无关?@RobG我可以……但仍然是IE的不同造成了问题。只是一个不同的功能。所以也许你可以删除“为什么我讨厌IE”这个短语,因为它与IE无关?@RobG我可以……但问题仍然是IE的不同造成的。只是