未捕获的TypeError:无法读取属性' toUpperCase'未定义的

时间:2016-02-26 05:14:01

标签: javascript jquery arrays string-matching

我试图将两个字符串转换为相同的格式,如toUpperCase / toLowerCase,以比较两个字符串,无论javaScript中是否区分大小写。以下是我的功能。

    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!!", '');                    


                    }
                }
                }

我收到此错误未捕获的TypeError:无法读取属性&#39; toUpperCase&#39;未定义。我也尝试先转换为String()然后转换为toLowercase()。它也是错误的(t​​oString()未定义)。还建议我,如果有任何其他方式来比较两个字符串,无论区分大小写。谢谢!

3 个答案:

答案 0 :(得分:3)

试试这个:

var getusername= ""+usernames[k];

如果这不起作用,那么这可能就是问题所在:

切换

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

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

答案 1 :(得分: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

答案 2 :(得分:1)

使用函数.toLowerCase()&amp; .toUpperCase()很好,但是按照其他方式对字符串不区分大小写进行比较,我建议使用regex。 尝试这样的事情用于不区分大小写的字符串比较

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