2017-04-04 147 views
0

我是編程新手。當我嘗試下面的這個函數時,除非在列中有一個空白單元格,否則它運行良好。如果單元格中有任何空白值,那麼它不起作用,然後整個頁面變爲空白。請幫我解決。未捕獲TypeError:無法讀取屬性'替換'null jqgrid

 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>'; 
}; 

都正常工作時,有沒有空白單元格。但是當有一個空白單元格時,它不起作用。請幫忙。

UPDATE

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

+0

'遺漏的類型錯誤:無法讀取性能在HTMLTableElement.growth(lsu.php:214)空 的 '替換' 在HTMLTableElement.R [如格式化](jquery.jqGrid (jquery.jqGrid.min.js:12).html.js:11) (jquery.jqGrid.min.js:12) at HTMLTableElement.fa(jquery.jqGrid.min.js:12) at HTMLTableElement。 (jquery.jqGrid.min.js:13) at Function.each(jquery.min.js:2) at n.fn.init.each(jquery.min.js:2)'@Asif this taken瀏覽器日誌 – davidb

回答

1

條件之前,您應該測試cellvalue != null試圖解析值。測試cellvalue != null意味着在JavaScript中與cellvalue !== null || cellvalue !== undefined相同。在這兩種情況下,您都不應該使用cellvalue.replace(或numval.replace)。

代碼中的下一個可能的問題是使用數字值作爲輸入數據。例如,您可以使用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>'; 
} 
+0

先生,非常感謝你。你的解決方案效果很好。非常感謝。 – davidb

+0

@davidb:不客氣! – Oleg

+0

@奧列格先生,你能幫我嗎http://stackoverflow.com/questions/43870268/in-jqgrid-how-to-show-dropdown-value-which-was-updated-in-database-by-user-由式 – davidb

0

可以全局設置像

function growth (cellvalue) { 

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

@Aisf,謝謝,我已經嘗試過如下所示:if(val!= null || val!=''|| val!=「」&& val <0)'但它不工作。 。 – davidb

+0

你試過替換之前?我的意思是檢查第一個cellvalue,如果cellvalue不爲空/空然後替換它。 –

+0

您仍然面臨問題,請先調試,在瀏覽器開發工具中獲取或不使用,或者使用console.log(cellvalue)。 。 。在這裏發佈價值..讓我們看看 –

相關問題