为什么这个javascript在IE中不起作用但在其他浏览器中有效?

时间:2012-02-01 22:30:09

标签: javascript

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

var friends = document.getElementById('friendsEmail').value;
...
 var emailArray=new Array();
 emailArray=String(friends).split(','); //error here

这适用于所有其他浏览器。事实上,我只添加了Array声明和显式String转换,以使其在IE中运行。但是,我仍然收到此错误

  

网页错误详情

     

用户代理:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 5.1;   三叉戟/ 4.0; .NET4.0C; .NET CLR 2.0.50727; .NET CLR 3.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对此不喜欢什么?我做的事情显然是愚蠢的,我没有看到?

修改

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

var emailArray=friends.split(',');

这也给我IE中的错误

编辑2

我很抱歉。原来,服务器正在缓存.js文件的旧版本,我看到的错误行不正确...我为此浪费你的时间而道歉。错误结果证明是完全不同的。对于那些好奇的人来说,因为这条线实际上失败了

emailArray[count]=emailArray[count].trim();

我已经解决了这个问题。

5 个答案:

答案 0 :(得分:2)

split()会创建自己的数组,因此请忽略emailArray=new Array();

你可以做到

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

答案 1 :(得分:1)

通常不推荐原始类型的构造函数。您的friends变量中已有字符串,因此只需将分割为

更改

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

emailArray = friends.split(','); //should work

答案 2 :(得分:1)

IE上的

Split不是标准的。我使用此library进行跨浏览器拆分。

答案 3 :(得分:0)

我强烈怀疑实际问题是document.getElementById('friendsEmail').valueundefined。你真的想要获取元素的文本内容吗?如果是这样,那么这有效:

var friends = document.getElementById("friendsEmail");
var emailArray = friends.innerText.split(",");

请注意,字符串文字的简单测试用例(如"str,str1,str2".split(","))会很快证明split不是问题。最好将物品减少到最小的可测试单元。否则,你只是在猜测错误的来源。

演示:http://jsfiddle.net/JHZJe/

答案 4 :(得分:0)

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

var friends = document.getElementById('friendsEmail').value;
var emailArray = friends.split(','); 

你可以在这里看到它:http://jsfiddle.net/jfriend00/s9S99/

所以,我认为问题是检索你的价值。这绝不是你认为的那样(有时它可能是空的。)