2014-01-21 26 views
0

我有一個關於java腳本中的拆分功能的問題。在我的例子中,split.length方法只返回「1」,但爲什麼?變量 「singleWords」 僅包括 「」(或者換句話說:無)Java Script split.length只返回1,但爲什麼?

下面是代碼:

var singleWords = jQuery(elementId).text().split(","); 
if (singleWords.length == 0) { 
    // if case 
} else { 
    // else case  
} 

的jQuery(elementId)的.text()的值是:「ABC,XYZ ,OOP「並且單詞的值是」「

+1

你可以做一個JSFiddle顯示這個請嗎? – BenM

+0

'elementId'和'jQuery(elementId).text()'的值是什麼? – CompuChip

+0

'singleWords'根本不能包含任何內容,它必須是一個數組,儘管它可能是一個只有一個元素是空字符串的數組。 – nnnnnn

回答

4

這是因爲如果沒有分隔符找到,分裂函數返回數組只包含單個元素。

4

split返回由原始字符串組成的字符串數組。由於您的原始字符串中沒有分隔符,因此split會返回一個僅包含原始字符串的數組。因此,數組的長度爲1,因爲它只包含一個元素。

2

函數split總是返回至少一個元素,當它這樣做時,該元素與您請求分割的輸入字符串相同。

3

如果您elementId變量包含元素的ID(顧名思義),那麼jQuery(elementId)會返回一個jQuery對象與沒有元素,jQuery(elementId).text()將是一個空字符串""。和一個空字符串已經.split()會返回一個數組包含一個元素(空字符串),所以後來singleWords.length將是1

要通過ID選擇元素,你需要jQuery("#" + elementId)

var singleWords = jQuery("#" + elementId).text().split(","); 

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

或者,如果你的元素是<input>元素,你需要使用.val()而非.text()

var singleWords = jQuery("#" + elementId).val().split(","); 

演示:http://jsfiddle.net/s3c3H/1/

而且代碼將需要運行元素被解析之後,所以它需要包含在相關的元素之後的腳本塊和/或包裹在文件準備好處理程序。

相關問題