Come controllare il valore "non definito" in jQuery


Risposte:


379

La libreria JQuery è stata sviluppata appositamente per semplificare e unificare determinate funzionalità JavaScript.

Tuttavia, se è necessario verificare una variabile rispetto al undefinedvalore, non è necessario inventare alcun metodo speciale, poiché JavaScript ha un typeofoperatore, che è semplice, veloce e multipiattaforma:

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

Restituisce una stringa che indica il tipo di variabile o altro operando non valutato. Il vantaggio principale di questo metodo, rispetto a if (value === undefined) { ... }, è che typeofnon genererà mai un'eccezione nel caso in cui la variabile valuenon esista.


12
@nahum jQuery è una libreria JavaScript. Questo non è un linguaggio di programmazione diverso.
VisioN,

10
lol omg stai davvero commentando questo ?? So che è lo stesso uomo. Ma immagino che voglia sapere se esiste un qualche tipo di metodo in jQuery come $ .isUndefined (Object); e restituisce il valore vero o falso. typeof è solo javascript senza alcun framework.
ncubica,

Uno dei miei problemi era: se stai facendo qualcosa del genere ("#myId"), assicurati di cosa hai davvero bisogno: a. typeof ("#myId")=== "undefined" b. Oppure:typeof ("#myId").val() === "undefined"
Alberici,

3
@Alberici ("#myId")non è altro che una costante di stringa . Sarà sempre definito e avrà un tipo di "string". Se intendi un vero oggetto jQuery creato con $("#myId"), verrà sempre definito come "object"(se hai jQuery collegato correttamente). L'esistenza di un elemento DOM con ID myIdpuò essere valutata con if ($("#myId").length > 0) { ... }, mentre è possibile verificare se il suo valore non è vuoto if ($("#myId").val()) { ... }. Nessuna di queste clausole in realtà riguarda l'argomento di questa domanda.
VisioN,

1
@ user3284463 Come menzionato nella risposta, simple value === undefinedgenererà un'eccezione se la valuevariabile non esiste. Quindi dipende completamente da te cosa usare nella vita reale.
VisioN,

26

In questo caso è possibile utilizzare un === undefinedconfronto:if(val === undefined)

Funziona perché esisteval sempre (è un argomento di funzione).

Se si desidera testare una variabile arbitraria che non è un argomento, ovvero potrebbe non essere definita affatto, è necessario utilizzare if(typeof val === 'undefined')per evitare un'eccezione nel caso in cuival non esistesse.


16

Si noti che typeof restituisce sempre una stringa e non genera un errore se la variabile non esiste affatto.

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

1
Per il confronto delle stringhe, penso che dobbiamo usare ===invece di==
Sreeram,

@Sreeram fanno entrambi un confronto, solo in modi diversi ... questo funzionerà benissimo
RGB,

10

So che sono in ritardo per rispondere alla funzione ma jquery ha una funzione incorporata per farlo

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

Fare riferimento al documento API jquery di jquery.type https://api.jquery.com/jQuery.type/ per lo stesso.


3

È possibile utilizzare la tecnica abbreviata per verificare se è indefinito o nullo

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

spero che questo ti possa aiutare



1

quando sto testando " typeof obj === undefined", il alert(typeof obj)ritorno object, anche se obj non è definito. Poiché obj è il tipo del Objectsuo ritorno Object, non undefined.

Quindi dopo ore di test ho optato per la tecnica di seguito.

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

Non sono sicuro del motivo per cui la prima tecnica non ha funzionato, ma ho fatto il mio lavoro usando questo.


0

Se hai nomi dell'elemento e non id possiamo ottenere il controllo indefinito su tutti gli elementi di testo (ad esempio) come sotto e riempirli con un valore predefinito diciamo 0.0:

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

Non sono sicuro che sia la soluzione migliore, ma funziona benissimo:

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

prova questo ~ tutto il tipo di controllo


0

È possibile utilizzare in due modi 1) if ( val == null ) 2)if ( val === undefine )

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.