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