2011-12-14 83 views
4

没有工作可以说我有一个textarea的有这样的文字:的Javascript分裂()在IE

  1. 一线一些文本。
  2. 第二行,其他文字。下一行将是空的。
  3. (空行)
  4. (空行)
  5. 最后一行这里

正如你所看到的,3和4行是空的(\n)。我需要得到精确的线结构(也有空行)并将其转换为数组。每一行都是数组的一个元素。这是我目前的代码:

var lines = $('#q').val().split(/\n/); 
alert(lines.length); //using alert() because IE doesn't support console.log() 
var texts = []; 
for(i = 0; i < lines.length; i++) { 
    texts.push($.trim(encodeURIComponent(lines[i]))); 
} 

它适用于除IE以外的所有浏览器。由于某些原因,split()函数会忽略IE中的空行(3和4)。通过Squeegy在评论š

解决方案

更换split(/\n/)split("\n") - 你这该死的IE:正因为如此,它们永远不会传递到阵!

+3

请尝试用字符串代替? `“\ n”` – 2011-12-14 21:16:42

+0

哇......这很简单。谢谢! – andufo 2011-12-14 21:19:29

+1

[JavaScript:分割在IE中无法工作?](http:// stackoverflow。com/questions/1453521/javascript-split-doesnt-work-in-ie) – 2011-12-14 21:21:55

回答

6

在IE8和更低版本中,正则表达式分割表现得很奇怪。使用字符串比较,而不是和它似乎工作(fiddle

testText.split("\n") 

而不是

testText.split(/\n/) 

[编辑]Steven Levithan's Blog

的Internet Explorer 排除几乎所有的空来自得到的 阵列的值(例如,当tw Ò分隔符彼此相邻出现在 数据时,或者当一个分隔符出现在数据的开始或结束)

2

可能重复JavaScript: split doesn't work in IE?? Internet Explorer会从结果数组中排除几乎所有空值(例如,两个分隔符在数据中彼此相邻显示,或者在数据的开头或结尾出现分隔符时)。

2

看到IE与.split()和新线相同的扭曲现象。您可以使用自己的分裂功能,以更紧密地控制它:

function mySplit(str, ch) { 
    var pos, start = 0, result = []; 
    while ((pos = str.indexOf(ch, start)) != -1) { 
     result.push(str.substring(start, pos)); 
     start = pos + 1; 
    } 
    result.push(str.substr(start)); 
    return(result);  
} 

在这里工作例如:http://jsfiddle.net/jfriend00/xQTNZ/