2011-03-15 217 views
3

我有一個對象從一個字段msg返回的對象。我試圖從msg中獲取值並將其轉換爲字符串,因此我可以使用.startswith()。我想下面..將對象轉換爲字符串

var msgstring = msg.value 
if(msgstring.startsWith("string")){ 
    //Doing stuff! 
} 

不過,我得到以下錯誤...

Uncaught TypeError: Object string here has no method 'startsWith' 

我要去哪裏錯了?

+1

你有一個缺少'''表明這不是你真正的測試用例。 – 2011-03-15 12:21:58

+0

http://stackoverflow.com/questions/646628/javascript-startswith可能的重複 – Chris 2011-03-15 12:24:52

回答

16

Javascript has no startsWith method。您可以使用

msgstring.indexOf('string') === 0 
2

的錯誤是正確的,JS有string對象沒有本地startsWith方法。

你可以自己構建擴展原型,或使用功能:

function StartsWith(s1, s2) { 
    return (s1.length >= s2.length && s1.substr(0, s2.length) == s2); 
} 

var msgstring = msg.value; 
if(StartsWith(msgstring, "string") { 
    //Doing stuff! 
} 
0

JavaScript中沒有startsWith()函數。你需要自己寫一個。

0

確切地說,你正在閱讀的是字符串對象(你的變量msgstring)沒有一個叫做startsWith的方法。閱讀有關使用字符串in here的更多信息。

你可能想這樣做:

msgstring.substr(0, 6) == "string" 
0

試試這個:

var msgstring = msg.value; 
if(!msgstring.indexOf("string")){  
     //Doing stuff! 
} 
0

大家都已經提到,可與JS沒有startsWith功能,我們需要創建一個爲了我們。下面是相同的實現

if (typeof String.prototype.startsWith != 'function') { 
    //Implementation to startsWith starts below 
    String.prototype.startsWith = function (str){ 
    return this.indexOf(str) == 0; 
    }; 
} 

這樣做後,你可以直接調用startsWith函數與你的字符串。 此關鍵字將是您調用該函數的字符串,str將是您與之比較的字符串。