2009-07-20 45 views
0

我有兩種類型的字符串作爲元素的ID在我的HTML標記:如何在不包含標記但不會導致錯誤的字符串上調用split(標記)?

日期:

"april-23" 
"march-20" 

和季節的名字:

"springtime" 
"winter" 

的日期有一個破折號月分離和那一天。

季節是一個單詞,沒有其他標記。

我想月份或季節到一個新的變量,名爲分配:如果我做

time_of_year 

這樣的:

var time_of_year = $(this).attr("id").split('-')[0]; 

它將工作在幾個月,但如果我上稱它爲一個不包含令牌的季節名稱,會產生一個錯誤嗎?

這樣做的安全方法是什麼?

回答

4

它不會返回錯誤,但會返回長度爲1的數組。

你可以做這樣的事情:

var splitty = $(this).attr('id').split('-'); 
if (splitty.length > 1) { 
    time_of_year = splitty[0]; 
} 
else { 
    // do something else magical here 
} 

這裏是split的文檔。

但是,如果你總是希望第一個值和不關心別人,你可以只使用你原來的代碼瓦特/ OA問題:

var time_of_year = $(this).attr('id').split('-')[0] 
+0

長度檢查似乎絕對沒有必要。 $(this).attr(「id」)。split(' - ')[0]是安全的。 – 2009-07-20 18:32:00

+0

@我想到了這一點,但是好像OP想要做一些不同的事情,如果分裂的角色不在那裏。儘管我會用這個反饋更新答案。 – seth 2009-07-20 18:52:10

3

您可以使用mystring.indexOf('-')(如果不存在,將返回-1)檢查連字符是否存在。但是我非常肯定,如果你在一個不包含該字符的字符上分割一個字符串,它將只返回原始字符串。

0

你爲什麼不先添加一個連字符執行拆分?無論如何,你正在抓住第一個元素。如果它是兩個元素中的第一個或三個元素中的第一個,有什麼區別?

var time_of_year = $((this).attr(「id」)+' - x')。split(' - ')[0];

這樣可以幫助您抓住項目的第一個連字符的左側,總是會有一個第一個連字符:

「四月-23-X」 「春天-X」

(請注意,我沒有測試這個,也沒有把我的生活放在語法上!但是也許這對你來說是一個新想法。)

編輯:順便說一下,我認爲原始帖子中的例子無論如何將工作。 Split應該返回一個長度爲1的列表,並且抓取[0]個元素,這非常完美。

相關問題