2012-06-08 17 views
0

我正在使用速記if語句來檢查內容中是否有斜體標記。速記 - 如果帶有字符索引檢查

remove = (content.indexOf('<i>') === true) ? true : false; 
alert("ORIGINAL CONTENT: " + content + "\nDoes content contain <i>? " + remove); 

當該警報彈出,它顯示以下內容: Alert box shows < i > in string, but returns false

我在做什麼錯?

+1

'bla === true'的用途是什麼? true:false'當你也可以寫'bla === true'?如果你沒有得到它,你的代碼現在看起來像'真的? true:false'。 –

+0

我給刪除了另一個值。我只是最終把真或假弄明白爲什麼它會給出錯誤的結果。但你的評論是100%真實的,所以我給了它一個投票。編輯添加:這是最終會發生什麼:'(content.indexOf('')!== -1)? '':content' – Albert

回答

5

indexOf返回字符串在另一個字符串中的位置,如果未找到則返回-1。它不像strpos在PHP中。所以你必須檢查content.indexOf('<i>') !== -1

在你的情況,我想簡單地定義

remove = content.indexOf('<i>') !== -1; 

三元運算符(我以前就知道這個名字)是不是真的有必要在這裏,作爲比較已經給你所需要的布爾值。

+0

備註:三元運算符僅表示「一個具有三個操作數的運算符」。我更喜歡使用術語條件運算符,因爲它描述了運算符實際做了什麼。 :) – Guffa

+0

@MaxArt,謝謝你的回答。當涉及到if等情況時,我經常會混淆PHP和Javascript/jquery。不知道爲什麼...總之,現在完美的工作。 – Albert

+0

@ MaxArt - 它實際上是一個**三元表達式**,並使用[條件運算符?:](http://es5.github.com/#x11.12)。 – RobG

0

你有沒有考慮過使用正則表達式?

remove = /<i>/.test(content); 

感謝RobG的糾正。

+1

你有這個倒退,測試是一種正則表達式的方法,而不是字符串:'/ /.test(content)'。 – RobG

0

主要報道在其他的答案,但在:

> content.indexOf('<i>') === true 

注意String.prototype.intexOf返回一個數字,它被比作布爾。由於它們是不同的類型,結果將始終是錯誤的。如果使用了等號運算符「==」,如果左手錶達式返回零(0)以外的任何值,則返回true。順便提及,斜體文本可以使用除I以外的元素來實現,例如,通過CSS應用適當樣式的span元素。