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

新手上路,请多包涵

我正在尝试将两个字符串转换为相同的格式,如 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: Cannot read property ‘toUpperCase’ of undefined 。我还尝试先转换 toString() ,然后再转换为 toLowercase() 。它也有错误(toString() 未定义)。如果有任何其他方法来比较两个字符串而不区分大小写,也建议我。谢谢!

原文由 Karthikeyan Pandian 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 456
2 个回答

尝试这个:

 var getusername= ""+usernames[k];

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

转变

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

为了

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

原文由 Ethan JC Rubik 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

原文由 Abhiii 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题