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