开发者问题收集

未捕获的类型错误:无法读取未定义的属性“toUpperCase”

2016-02-26
40725

我尝试将两个字符串转换为相同的格式,如 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!!", '');                    


                    }
                }
                }

我收到此错误 Uncaught TypeError:无法读取未定义的属性“toUpperCase”。我还尝试先转换 toString(),然后转换为 toLowercase()。这也是错误的(t​​oString() 未定义)。还请告诉我是否有其他方法来比较两个字符串,而不管是否区分大小写。谢谢!

3个回答

尝试此操作:

var getusername= ""+usernames[k];

如果此操作无效,则问题可能出在这里:

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

切换为

for (var k = 0; k <= usernames.length-1; k++)
Ethan JC Rubik
2016-02-26

尝试一下

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


             }
       }
    }
});

您可以在此处查看 演示

Domain
2016-02-26

使用函数 .toLowerCase().toUpperCase() 都可以,但根据对字符串不区分大小写比较的其他方法的要求,我建议使用 regex 。 尝试使用类似这样的方法进行不区分大小写的字符串比较

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