Pytanie w sprawie undefined, jquery, javascript – Jak sprawdzić wartość „niezdefiniowaną” w jQuery

152

Możliwy duplikat:
Wykrywanie niezdefiniowanej właściwości obiektu w JavaScript
javascript undefined porównaj

Jak dodać czek dla niezdefiniowanej zmiennej, jak:

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

Twoja odpowiedź

11   odpowiedzi
2
if (value === undefined) {
    // ...
}
341

Biblioteka JQuery została opracowana specjalnie w celu uproszczenia i ujednolicenia niektórych funkcji JavaScript.

Jeśli jednak musisz sprawdzić zmienną przeciwkoundefined wartość, nie ma potrzeby wymyślania żadnej specjalnej metody, ponieważ JavaScript matypeof operator, który jest prosty, szybki i wieloplatformowy:

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

Zwraca ciąg wskazujący typ zmiennej lub inny nieoceniony operand. Główną zaletą tej metody w porównaniu doif (value === undefined) { ... }, czy totypeof nigdy nie zgłosi wyjątku w przypadku, gdy zmiennavalue nie istnieje.

To powinno byćvalue === undefined bez cytaty. @Hast Działa w jQuery Rust
@Alberici("#myId") to nic innego jakstrunowy stały. Zawsze będzie zdefiniowany i będzie miał typ"string". Jeśli masz na myśli rzeczywisteobiekt jQuery stworzony za pomocą$("#myId"), zawsze będzie definiowane jako"object" (jeśli masz jQuery połączone poprawnie). Istnienie elementu DOM z identyfikatoremmyId można ocenić za pomocąif ($("#myId").length > 0) { ... }, podczas gdy sprawdzanie, czy jego wartość nie jest pusta, można wykonać za pomocąif ($("#myId").val()) { ... }. Żadna z tych klauzul nie odnosi się do tematu tego pytania. VisioN
@ VisioN działało dla mnie z jquery 1.9.1. Dzięki V15HM4Y
Nie działa z jquery Hast
2

Możesz użyć skróconej techniki, aby sprawdzić, czy jest ona niezdefiniowana lub null

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

mam nadzieję, że to ci pomoże

14

Zauważ, że typeof zawsze zwraca ciąg znaków i nie generuje błędu, jeśli zmienna w ogóle nie istnieje.

function A(val){
  if(typeof(val)  === "undefined") 
    //do this
  else
   //do this
}
Dla porównania ciągów myślę, że musimy użyć=== zamiast== Sreeram
@Sreeram oboje porównują, tylko na różne sposoby ... to będzie działać dobrze RGB
0

Jeśli masz nazwy elementu, a nie id, możemy uzyskać niezdefiniowane sprawdzanie wszystkich elementów tekstowych (na przykład) jak poniżej i wypełnić je wartością domyślną, powiedzmy 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')
    }
  })
25

W takim przypadku możesz użyć a=== undefined porównanie:if(val === undefined)

To działa, ponieważval zawszeistnieje (to argument funkcji).

Jeśli chciałbyś przetestować dowolną zmienną, która nie jest argumentem, tj. Może nie być w ogóle zdefiniowana, musiałbyś użyćif(typeof val === 'undefined') aby uniknąć wyjątkuval nie istniał.

10

Wiem, że jestem spóźniony, aby odpowiedzieć na funkcję, ale jquery ma funkcję budowania, aby to zrobić

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

Odwołaj się do dokumentu API jquery dla jquery.typehttps://api.jquery.com/jQuery.type/ za to samo.

0

Nie jestem pewien, czy jest to najlepsze rozwiązanie, ale działa dobrze:

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

Możesz użyć dwóch sposobów 1)if ( val == null ) 2)if ( val === undefine )

1

kiedy testuję ”typeof obj === undefined„, thealert(typeof obj) powracającyobject, nawet jeśli obiekt jest niezdefiniowany. Ponieważ obj jest typemObject jego powrótObject, nieundefined.

Więc po wielu godzinach testów wybrałem technikę poniżej.

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

Nie jestem pewien, dlaczego pierwsza technika nie zadziałała.

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

spróbuj tego ~ wszystkich typów sprawdzania

Powiązane pytania