我正在尝试提取对象的属性并使该字符串成为小写字符串。由于某种原因,它无法正常工作:
我有一个对象story
,它有一个名为status
的属性。状态显示为"空缺"或"被占用"或其他一些事情。我想编写代码,以便本表的管理员可以编写" Vacant"或者"空缺"而不必担心资本化。状态也会显示在页面上,因此最好显示" Vacant"的正确大小写。但除此之外,还有。
我有一个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"){
但是控制台返回了错误Cannot read property 'toLowerCase' of undefined
。我也尝试首先使用.toString()
将其变为变量:
myStatus = story[i].status.toString();
if(myStatus.toLowerCase() == "vacant"){
但是这给了我一个控制台错误Cannot read property 'toString' of undefined
当谈到这个陈述时,我如何确保字符串总是小写?
答案 0 :(得分:2)
Cannot read property 'toLowerCase' of undefined
表示story[i].status
不存在。
请改为:
if( "status" in story[i] ) {
switch( story[i].status.toLowerCase() ) {
case "vacant":
break;
case "occupied":
// etc
}
}
答案 1 :(得分:2)
Cannot read property 'toLowerCase' of undefined
表示story[i].status
未定义,因此它不是string
,因此toLowerCase()
功能无法使用。
你需要检查一下故事[i] .status'在使用之前设置:
if (typpeof story[i].status != "undefined"){
//do stuff with story[i].status
}
答案 2 :(得分:1)
状态未正确设置,而不是“空”或“占用”返回undefined。因此,您不能使用小写或toString这个未定义的对象。
我建议在代码中的不同位置打印出对象的属性,以确定它未正确设置或转移此属性的位置。