开发者问题收集

Javascript - 'toLowerCase()' 不适用于对象属性

2015-04-21
2444

我试图提取对象的属性并将该字符串变为小写字符串。由于某种原因,它不起作用:

我有一个对象 story ,它有一个名为 status 的属性。状态显示为“空置”或“占用”或其他内容。我想编写代码,以便此工作表的管理员可以写“空置”或“空置”,而不必担心大写。状态也会显示在页面上,因此最好显示“空置”的正确大写。但这不是重点。

我有一个 if 语句:

$.each(story, function(i){
    if(story[i].status == "vacant"){
        showVacant(i-1);    
    } else if(story[i].status == "occupied"){
        showOccupied(i-1);
    } else if(story[i].status == "feature"){
        showFeatured(i-1);
    } else {
        showVacant(i-1);
    }
});

我尝试在 if 语句中使用 toLowerCase();

if(story[i].status.toLowerCase() == "vacant"){

但控制台返回错误 无法读取未定义的属性“toLowerCase” 。我也尝试先使用 .toString() 将其设为变量:

myStatus = story[i].status.toString();
if(myStatus.toLowerCase() == "vacant"){

但这给了我一个控制台错误 无法读取未定义的属性“toString”

如何确保此语句中的字符串始终为小写?

3个回答

无法读取未定义的属性“toLowerCase” 意味着 story[i].status 未定义,因此它不是 字符串 ,因此 toLowerCase() 函数对其不可用。

您需要在使用“story[i].status”之前检查它是否已设置:

if (typpeof story[i].status != "undefined"){
    //do stuff with story[i].status
}
DrCord
2015-04-21

无法读取未定义的属性“toLowerCase” 意味着 story[i].status 不存在。

请执行以下操作:

if( "status" in story[i] ) {
    switch( story[i].status.toLowerCase() ) {
        case "vacant":
            break;
        case "occupied":
            // etc
    }
}
Dai
2015-04-21

状态设置不正确,返回的不是“空置”或“占用”,而是未定义。因此,您无法将未定义对象小写或转换为字符串。

我建议在代码中的各个位置打印出对象的属性,以确定未正确设置或传递此属性的位置。

Chandler
2015-04-21