So überprüfen Sie den undefinierten Wert in jQuery


Antworten:


379

Die JQuery-Bibliothek wurde speziell entwickelt, um bestimmte JavaScript-Funktionen zu vereinfachen und zu vereinheitlichen.

Wenn Sie jedoch eine Variable mit dem undefinedWert vergleichen müssen, müssen Sie keine spezielle Methode erfinden, da JavaScript über einen typeofOperator verfügt, der einfach, schnell und plattformübergreifend ist:

if (typeof value === "undefined") {
    // ...
}

Es wird eine Zeichenfolge zurückgegeben, die den Typ der Variablen oder eines anderen nicht bewerteten Operanden angibt. Der Hauptvorteil dieser Methode im Vergleich zu if (value === undefined) { ... }ist, dass typeofniemals eine Ausnahme ausgelöst wird, wenn valuekeine Variable vorhanden ist.


12
@nahum jQuery ist eine JavaScript-Bibliothek. Dies ist keine andere Programmiersprache.
VisioN

9
lol omg kommentierst du das wirklich? Ich weiß, ist der gleiche Mann. Aber ich denke, er möchte wissen, ob es in jQuery eine Methode wie $ .isUndefined (Object) gibt. und geben Sie den Wert true oder false zurück. typeof ist nur Javascript ohne Framework.
Ncubica

Eines meiner Probleme war: Wenn Sie so etwas tun ("#myId"), stellen Sie sicher, was Sie wirklich brauchen: a. typeof ("#myId")=== "undefined" b. Oder:typeof ("#myId").val() === "undefined"
Alberici

3
@Alberici ("#myId")ist nichts anderes als eine String- Konstante. Es wird immer definiert und hat eine Art von "string". Wenn Sie ein tatsächlich erstelltes jQuery-Objekt meinen, mit dem $("#myId")es erstellt wurde , wird es immer als definiert "object"(wenn Sie jQuery korrekt verknüpft haben). Das Vorhandensein eines DOM-Elements mit ID myIdkann mit bewertet werden if ($("#myId").length > 0) { ... }, während überprüft werden kann, ob sein Wert nicht leer ist if ($("#myId").val()) { ... }. Keine dieser Klauseln bezieht sich tatsächlich auf das Thema dieser Frage.
VisioN

1
@ user3284463 Wie in der Antwort erwähnt, löst simple value === undefinedeine Ausnahme aus, wenn valuekeine Variable vorhanden ist. Es liegt also ganz bei Ihnen, was Sie im wirklichen Leben verwenden möchten.
VisioN

26

In diesem Fall können Sie einen === undefinedVergleich verwenden:if(val === undefined)

Dies funktioniert, weil es valimmer existiert (es ist ein Funktionsargument).

Wenn Sie eine beliebige Variable testen möchten, die kein Argument ist, dh möglicherweise überhaupt nicht definiert ist, müssen Sie if(typeof val === 'undefined')eine Ausnahme vermeiden, falls valdiese nicht vorhanden ist.


16

Beachten Sie, dass typeof immer eine Zeichenfolge zurückgibt und keinen Fehler generiert, wenn die Variable überhaupt nicht vorhanden ist.

function A(val){
  if(typeof(val)  === "undefined") 
    //do this
  else
   //do this
}

1
Für den String-Vergleich denke ich, wir müssen ===anstelle von==
Sreeram

@Sreeram beide machen Vergleiche, nur auf unterschiedliche Weise ... das wird gut funktionieren
RGB

10

Ich weiß, dass ich zu spät komme, um die Funktion zu beantworten, aber jquery hat eine eingebaute Funktion, um dies zu tun

if(jQuery.type(val) === "undefined"){
    //Some code goes here
}

Weitere Informationen finden Sie im jquery API-Dokument von jquery.type https://api.jquery.com/jQuery.type/ .


3

Sie können die Kurzschrifttechnik verwenden, um zu überprüfen, ob sie undefiniert oder null ist

 function A(val)
 {
   if(val || "") 
   //do this
 else
 //do this
 }

hoffe das wird dir helfen



1

Wenn ich " typeof obj === undefined" teste, erfolgt die alert(typeof obj)Rückkehr object, obwohl obj undefiniert ist. Da obj die Art Objectseiner Rückkehr ist Object, nicht undefined.

Nach stundenlangem Testen habe ich mich für die folgende Technik entschieden.

if(document.getElementById(obj) !== null){
//do...
}else{
//do...
}

Ich bin mir nicht sicher, warum die erste Technik nicht funktioniert hat. Aber ich erledige meine Arbeit damit.


0

Wenn Sie Namen des Elements und keine ID haben, können wir die undefinierte Prüfung aller Textelemente (zum Beispiel) wie folgt durchführen und sie mit einem Standardwert wie 0,0 füllen:

var aFieldsCannotBeNull=['ast_chkacc_bwr','ast_savacc_bwr'];
 jQuery.each(aFieldsCannotBeNull,function(nShowIndex,sShowKey) {
   var $_oField = jQuery("input[name='"+sShowKey+"']");
   if($_oField.val().trim().length === 0){
       $_oField.val('0.0')
    }
  })

0

Ich bin nicht sicher, ob es die beste Lösung ist, aber es funktioniert gut:

if($someObject['length']!=0){
    //do someting
}

0
function isValue(value, def, is_return) {
    if ( $.type(value) == 'null'
        || $.type(value) == 'undefined'
        || $.trim(value) == ''
        || ($.type(value) == 'number' && !$.isNumeric(value))
        || ($.type(value) == 'array' && value.length == 0)
        || ($.type(value) == 'object' && $.isEmptyObject(value)) ) {
        return ($.type(def) != 'undefined') ? def : false;
    } else {
        return ($.type(is_return) == 'boolean' && is_return === true ? value : true);
    }
}

Versuchen Sie dies ~ alle Typprüfung


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.