未捕获的TypeError:无法读取属性'替换' null jqgrid

时间:2017-04-04 05:56:16

标签: javascript jqgrid jqgrid-formatter

我是编程新手。当我尝试以下功能时,除非列中有空白单元格,否则效果很好。如果单元格中有任何空白值,则它不起作用,然后整个页面变为空白。请帮我解决。

        function growth (cellvalue) {
                        var gcolor;
                        var numval=cellvalue
                        var val = Number(numval.replace("%",""));
                        if (val<0) {
                            gcolor = 'red';
                        } else if (val>0) {
                            gcolor = 'green';
                        } 
                        return '<span class="cellWithoutBackground" style="background-color:' + gcolor + ';">' + cellvalue + '</span>';
                    };

我也在下面尝试了这个,不等于null if (val !== null && val<0)

    function growth (cellvalue) {
var gcolor;
var numval=cellvalue
var val = Number(numval.replace("%",""));
if (val !== null && val<0) {
gcolor = 'red';
} else if (val !== null && val>0) {
gcolor = 'green';
} 
return '<span class="cellWithoutBackground" style="background-color:' + gcolor + ';">' + cellvalue + '</span>';
};

当没有空白单元格时,两者都能正常工作。但是当有一个空白单元格时,它不起作用。请帮忙。

更新

function growth (cellvalue) {
                        var numval=cellvalue
                        if(numval != null || numval != '' || numval != "")
                        {
                        var gcolor;
                        var val = Number(numval.replace("%",""));
                        if(val<0) {gcolor = 'red';}
                        else if(val >0) {gcolor = 'green';}
                        return '<span class="cellWithoutBackground" style="background-color:' + gcolor + ';">' + cellvalue + '</span>';
                        };
                       else{return '<span class="cellWithoutBackground" style="background-color:' + white + ';">' + cellvalue + '</span>';};

browser console log

2 个答案:

答案 0 :(得分:3)

您应该在尝试解析值之前测试cellvalue != null 。对cellvalue != null的测试在JavaScript中与cellvalue !== null || cellvalue !== undefined相同。在这两种情况下,您都不应该使用cellvalue.replace(或numval.replace)。

代码中的下一个可能问题是使用 numeric 值作为输入数据。例如,您可以使用123代替"123"。数字类型没有方法replace,您可能还有一个错误。如果数字不是字符串,我建议您使用String(cellvalue)将数字转换为字符串。

尝试类似

的内容
function growth (cellvalue) {
    if (cellvalue == null) { // test for null or undefined
        return "";
    }
    cellvalue = Number(String(cellvalue).replace("%",""));
    return '<span class="cellWithoutBackground" style="background-color:' +
        (cellvalue < 0 ? 'red' : 'green') +
        ';">' + cellvalue + '</span>';
}

答案 1 :(得分:0)

您可以设置全局条件,如

function growth (cellvalue) { 

if(cellvalue != null || cellvalue!= '' || cellvalue != "") {
// do stuff here
 }
 else {
  //nothing do
}
}