Javascript - ' toLowerCase()'不处理对象属性

时间:2015-04-21 17:36:18

标签: javascript

我正在尝试提取对象的属性并使该字符串成为小写字符串。由于某种原因,它无法正常工作:

我有一个对象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

当谈到这个陈述时,我如何确保字符串总是小写?

3 个答案:

答案 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这个未定义的对象。

我建议在代码中的不同位置打印出对象的属性,以确定它未​​正确设置或转移此属性的位置。