2017-04-04 2 views
0

Ich bin neu in der Programmierung. Wenn ich diese Funktion unten versuche, funktioniert es gut, es sei denn, es gibt eine leere Zelle in der Spalte. Wenn in der Zelle ein leerer Wert vorhanden ist, funktioniert sie nicht und die gesamte Seite wird leer. bitte hilf mir zu reparieren.Uncaught TypeError: Kann die Eigenschaft 'replace' von null jqgrid nicht lesen

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

Ich habe auch versucht, dies im folgenden nicht gleich wie diese feinen beiden Werken 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>'; 
}; 

auf null, wenn es keine leere Zelle ist. aber wenn es eine leere Zelle gibt, funktioniert es nicht. bitte hilfe.

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

'Uncaught Typeerror: kann Eigenschaft lesen 'ersetzen' von null bei HTMLTableElement.growth (lsu.php: 214) bei HTMLTableElement.R [als Formatierer] (jquery.jqGrid .min.js: 11) bei jquery.jqGrid.min.js: 11 bei HTMLTableElement.parseDataToHtml (jquery.jqGrid.min.js: 11) bei HTMLTableElement._ (jquery.jqGrid.min.js: 12) bei D (jquery.jqGrid.min.js: 12) bei HTMLTableElement.fa (jquery.jqGrid.min.js: 12) bei HTMLTableElement. (jquery.jqGrid.min.js: 13) bei Function.each (jquery.min.js: 2) bei n.fn.init.each (jquery.min.js: 2) '@ Asif dies aus genommen browser log – davidb

Antwort

1

Sie sollten cellvalue != nullvor versuchen, den Wert testen einstellen zu analysieren. Testen für cellvalue != null bedeutet in JavaScript das gleiche wie cellvalue !== null || cellvalue !== undefined. In beiden Fällen sollten Sie nicht cellvalue.replace (oder numval.replace) verwenden. Das nächste mögliche Problem in Ihrem Code wird die Verwendung von numerischen Werten als Eingabedaten sein. Zum Beispiel können Sie 123 anstelle von "123" verwenden. Der Zahlentyp hat keine Methode replace und Sie könnten einen weiteren Fehler haben. Ich empfehle Ihnen, String(cellvalue) zu verwenden, um die Zahl in die Zeichenfolge zu konvertieren, wenn es nicht bereits die Zeichenfolge ist.

Probieren Sie etwas wie

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

Sir Vielen Dank. Ihre Lösung funktioniert großartig. Danke vielmals. – davidb

+0

@davidb: Gern geschehen! – Oleg

+0

@ Oleg Herr, können Sie mir bitte helfen http://stackoverflow.com/questions/43870268/in-jqgrid-how-to-show-dropdown-value-which-was-updated-in-database-by-user- Von in – davidb

0

Sie global Zustand wie

function growth (cellvalue) { 

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

@Aisf, danke, ich habe versucht wie folgt unter 'if (val! = null || val! =' '|| val! = "" && val <0) 'aber es funktioniert nicht. bitte beraten . – davidb

+0

haben Sie vor dem Ersetzen versucht? Ich meine, prüfe zuerst cellvalue, wenn cellvalue nicht null/leer ist, dann ersetze es. –

+0

Sie stehen immer noch vor dem Problem, bitte debuggen Sie zuerst, Wert, den Sie bekommen, oder nicht im Browser-Entwickler-Tool, oder console.log (cellvalue). . . posten Sie den Wert hier .. Lassen Sie sehen –

Verwandte Themen