2010-10-25 53 views
1

我有一個if語句,如果某個變量沒有其中的<br/>元素,我想執行它。你會如何做到這一點?如何在if語句中的javascript中使用搜索方法?

我試圖

var str = "hello<br/>goodbye"; 
if(str.search("<br/>") == false) { 
//execute certain code 
} 

但這並沒有工作。

+2

var str =「hello」; – zerodin 2010-10-25 20:26:09

+0

@deepsat良好的捕獲。固定。 – chromedude 2010-10-25 20:31:49

回答

3

search()函數返回在(如果有的話)找到匹配的位置。如果找不到匹配,則返回-1。所以你想要

var str = "hello"; 
if(str.search("e") <0) { //no match 
//execute certain code 
} 

另外請注意,搜索參數是一個正則表達式;當您嘗試搜索可能變得相關的HTML標記時。

+0

好的,那麼如果我試圖搜索
元素呢? – chromedude 2010-10-25 20:31:10

+0

它的工作方式完全相同。它只是返回s作爲參數傳入的字符串中的起始位置。相同的代碼應該可以工作。 – JohnFx 2010-10-25 20:34:36

+0

你應該只能把''
''放在你當前有「e」的地方,但是如果你想匹配'「
」'或'「,你可能想要使用更復雜的正則表達式style ='clear:all'/>「'等等。 – 2010-10-25 20:42:59

0

search函數返回一個索引。這將是>=0如果值被發現

if (str.search("e") >= 0) { 
    // the string matches 
} 

search文檔

你原來的問題,雖然提到確定的值不具有<br/>元素在裏面。你能否在這一點上更具體些?尤其值是什麼:DOM元素,字符串等...

4

您可以使用正則表達式也:

if (/e/.test(str)) { 
    ... 
} 
+0

很諷刺的是,當你的帖子在這種情況下比* search()*更合適時,你的帖子被拒絕投票。 * test()*的工作方式與* search()*的工作方式類似,只不過它爲匹配成功的匹配返回一個布爾值,而不是匹配的子字符串的位置。 +1來平衡它。 – 2010-10-25 20:50:08

1

不要傳遞一個字符串字面作爲搜索()的說法。任何傳遞給search()的非正則表達式都將用於創建正則表達式,其中的任何「特殊」字符將失去它們的字面含義。例如:

"Hello. Goodbye".search(".") 

將返回0,不5其中.字符。這是因爲.在正則表達式中有特殊含義,並且會匹配除換行符之外的任何字符。

實際需要的indexOf()方法,產生正是同樣的事情,而是需要一個字符串作爲參數,並返回字符串匹配的字符串中的位置:

var str = "hello<br/>goodbye"; 
if(str.indexOf("<br/>") == -1) { // String not found 
    //execute certain code 
} 

更多信息在MDC documentation for search