2016-02-26 138 views
1

我試圖將兩個字符串轉換爲相同的格式,比如toUpperCase/toLowerCase來比較兩個字符串,而不管在javaScript中是否區分大小寫。以下是我的功能。先不能讀取屬性「toUpperCase」未定義的。我也試圖轉換的toString()來toLowercase()。它也犯了錯誤(的toString()未定義):Uncaught TypeError:無法讀取未定義的屬性'toUpperCase'

function submitForm() { 

    var usernames=['one','two','Test']; 
    var cpusername = "test"; 
      var flag = 0; 

    if (cpusername !== "") 
       { 
    for (var k = 0; k < usernames.length; k++) 
       { 
     var upperCasecpusername=cpusername.toUpperCase(); 
     var getusername= usernames[k]; 
     var upperCaseusername=getusername.toUpperCase(); 

        if (upperCasecpusername === upperCaseusername) 
        { 
         flag=1; 
    console.log(flag); 
      //document.getElementById('cpusername').value = ''; 
       $.messager.alert("Message", "Someone already has username"+cpusername+". Try another!!", '');      


        } 
       } 
       } 

正在此錯誤遺漏的類型錯誤。另外建議我是否有其他方法來比較兩個字符串,而不管區分大小寫。謝謝!

+3

如果條件'k <= usernames.length;'將使它通過數組邊界。數組的索引是0,所以數組的最後一個索引將是Array'length-1' –

+0

其中代碼中的'toUpperCase'是? – gurvinder372

+1

可能重複[Javascript數組未定義for循環](http://stackoverflow.com/questions/6571451/javascript-array-undefined-in-for-loop) –

回答

3

試試這個:

var getusername= ""+usernames[k]; 

如果還是不行,那麼這可能是這個問題:

開關

for (var k = 0; k <= usernames.length; k++) 

for (var k = 0; k <= usernames.length-1; k++) 
+0

謝謝你。它確實有效。但爲什麼toUpperCase不適用於數組。任何想法? –

+0

甚至可以爲(var k = 0; k Andy

+0

你嘗試了我的第一個建議嗎?這應該使'.toUpperCase'工作。如果不是,那麼我真的不知道錯誤可能是什麼。 –

1

試試這個

js代碼

jQuery(document).ready(function() { 

    var usernames=['one','two','Test']; 
    var cpusername = "test"; 
      var flag = 0; 

    if (cpusername !== "") 
       { 
    for (var k = 0; k < usernames.length; k++) 
    { 
     var upperCasecpusername=cpusername.toLowerCase(); 
     var getusername= usernames[k]; 
     console.log(getusername); 
     var upperCaseusername=getusername.toLowerCase(); 

      if (upperCasecpusername === upperCaseusername) 
      { 
        console.log(upperCasecpusername); 
        console.log(upperCaseusername); 
         flag=1; 
        console.log(flag); 
      //document.getElementById('cpusername').value = ''; 
       alert("Someone already has username"+cpusername+". Try another!!", '');      


      } 
     } 
    } 
}); 

您可以查看demo here

1

使用功能.toLowerCase() & .toUpperCase()都很好,但要求其他方式的字符串區分大小寫的比較,我會建議使用regex。 嘗試類似這樣的不區分大小寫的字符串比較

var str= "TEST"; 
var result = str.match(/test/i); 
if(result){ 
// Write logic once the match found 
} 
相關問題