2012-05-14 15 views
5

Ich versuche eine komplette Funktion in einem Ajax-Aufruf zu verarbeiten. Wenn der Wert nicht definiert ist, möchte ich eine Variable als leere Zeichenfolge darstellen. Ansonsten möchte ich den Wert in einem String-Array erfassen.Probleme mit undefiniert! == undefined

Das Problem ist, dass ich die if-Anweisung eingeben, auch wenn der Wert der betreffenden Variable protokolliert als nicht definiert zurückgibt. Was fehlt mir hier?

completefunc: function (xData, Status) { 
     $(xData.responseXML).SPFilterNode("z:row").each(function() { 
     if(typeof $(this).attr("ows_Products") !== undefined) { 
      console.log($(this).attr("ows_Products")); 
      arr = $(this).attr("ows_Products").split(','); 
     } 
     else { 
      arr = ""; 
     } 
     }); 
    } 
+1

Haben Sie einen Blick auf diese vorherige Frage: http://stackoverflow.com/questions/776950/javascript -undefined-undefined –

+0

@web_bod, die mehr in Bezug auf das Vergleichen von == zu ===, was bedeutet, null == undefined = wahr, während null === undefined = falsch – Wesley

Antwort

16

typeof liefert einen String-Wert, so dass Sie mit "undefined" als String vergleichen benötigen. ZB

if(typeof $(this).attr("ows_Products") !== "undefined") { ... } 

Bearbeiten - weitere Informationen:

Wenn Sie die MDN page for typeof überprüfen, werden Sie sehen:

Der typeof-Operator gibt eine Zeichenfolge, die den Typ von der unbewertete Operand.

Das ist sehr verschieden von dem Type Rückkehr selbst (die in JavaScript wahrscheinlich etwas wie eine Rückkehr eine Konstruktorfunktion wie String sein würde, Array, etc.). Wenn daher typeof verwenden, werden Sie immer auf Strings wie "object" sein zu vergleichen, "string", "undefined" usw.

+0

Ahh ja. Es sind manchmal die kleinen Dinge. – Wesley

+5

Die Einfachheit der Lösung ist in der Regel umgekehrt proportional zu wie lange Sie das Problem starrte :) – jmar777

+0

+1, nur weil dieser Kommentar !!! – gdoron

0
if($(this).attr("own_Products")){ 
     arr = $(this).attr("ows_Products").split(','); 
}else{ 
     arr="" 
} 
Verwandte Themen