我讨厌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();
我已经解决了这个问题。
答案 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)
Split
不是标准的。我使用此library进行跨浏览器拆分。
答案 3 :(得分:0)
我强烈怀疑实际问题是document.getElementById('friendsEmail').value
是undefined
。你真的想要获取元素的文本内容吗?如果是这样,那么这有效:
var friends = document.getElementById("friendsEmail");
var emailArray = friends.innerText.split(",");
请注意,字符串文字的简单测试用例(如"str,str1,str2".split(",")
)会很快证明split
不是问题。最好将物品减少到最小的可测试单元。否则,你只是在猜测错误的来源。
答案 4 :(得分:0)
我发现您的代码没有问题。我认为您检索的值可能有问题,friends
不是您认为的那样。你可以在这个jsFiddle中看到你正在使用的一般概念在IE中起作用:
var friends = document.getElementById('friendsEmail').value;
var emailArray = friends.split(',');
你可以在这里看到它:http://jsfiddle.net/jfriend00/s9S99/。
所以,我认为问题是检索你的价值。这绝不是你认为的那样(有时它可能是空的。)