2011-12-14 29 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/