webentwicklung-frage-antwort-db.com.de

Ist if (document.getElementById ('etwas')! = Null) identisch mit if (document.getElementById ('etwas'))?

Wenn ich überprüfen möchte, ob ein Element auf einer Seite vorhanden ist. Sind diese beiden Überprüfungen gleich? Gibt es eine kompaktere Möglichkeit, die Existenz zu überprüfen?

Was ist, wenn ich überprüfen möchte, ob der value == ''. Kann dies auch in diese Prüfung einbezogen werden?

Ein Verweis auf ein Element wird niemals "falsch" aussehen, daher ist das Sichern der expliziten Nullprüfung sicher.

Javascript behandelt Verweise auf einige Werte in einem booleschen Kontext als false: undefined, null, numerische Null und NaN sowie leere Zeichenfolgen. Was getElementById zurückgibt, ist jedoch entweder eine Elementreferenz oder null. Wenn sich das Element im DOM befindet, ist der Rückgabewert also eine Objektreferenz und alle Objektreferenzen sind true in einem if ()-Test. Wenn das Element im DOM nicht ist, wäre der Rückgabewert null und null ist in einem if ()-Test immer false.

Es ist harmlos, den Vergleich mit einzubeziehen, aber ich persönlich bevorzuge Codebits, die nichts tun, da ich jedes Mal herausfinde, dass mein Finger auf die Tastatur schlägt.

Beachten Sie, dass diejenigen, die jQuery verwenden, nicht tun sollten:

if ($('#something')) { /* ... */ }

da die jQuery-Funktion immer etwas "true" zurückgibt - selbst wenn kein Element gefunden wird, gibt jQuery eine Objektreferenz zurück. Stattdessen:

if ($('#something').length) { /* ... */ }

edit - zur Überprüfung des -Werts eines Elements, nein, das ist nicht möglich, wenn Sie mit DOM-Methoden direkt auf die Existenz des Elements prüfen. Wiederum machen die meisten Frameworks das relativ einfach und sauber, wie andere in ihren Antworten bemerkt haben. 

28
Pointy

Es ist besser (aber wortreicher) zu verwenden:

var element = document.getElementById('something');
if (element != null && element.value == '') {
}

Bitte beachten Sie, dass die erste Version meiner Antwort falsch war:

var element = document.getElementById('something');
if (typeof element !== "undefined" && element.value == '') {
}

weil getElementById() immer ein Objekt zurückgibt (Nullobjekt, falls nicht gefunden) und die Prüfung auf"undefined" niemals eine false zurückgeben würde, da typeof null !== "undefined" noch true ist.

15
Andir

Mach es einfach so:

if (! document.getElementById ("someId") {/ Ein Code. Beachten Sie das NOT (!) im Ausdruck /};

Wenn das Element mit der ID "someId" nicht vorhanden ist, gibt der Ausdruck TRUE (NOT FALSE === TRUE) oder! False === true zurück.

versuchen Sie diesen Code:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="format-detection" content="telephone-no">
        <meta name="viewport" content="user-scalable=no, initial-scale=1, minimum-scale=1, maximum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi">
        <title>Test</title>
    </head>
    <body>
      <script>
var createPerson = function (name) {
    var person;
    if (!document.getElementById(name)) {
        alert("Element does not exist. Let's create it.");
      person = document.createElement("div");
//add argument name as the ID of the element
      person.id = name;
//append element to the body of the document
      document.body.appendChild(person);
    } else {
        alert("Element exists. Lets get it by ID!");
      person = document.getElementById(name);
    }
    person.innerHTML = "HI THERE!";

};
//run the function.
createPerson("someid");
          </script>
       </body>
</html>

Versuchen Sie dies in Ihrem Browser und es sollte die Warnung "Element existiert nicht. Lassen Sie uns es erstellen." 

Jetzt hinzufügen 

<div id="someid"></div>

zum Hauptteil der Seite und versuchen Sie es erneut. Voila! :)

5
Gawran

document.getElementById ('Etwas') kann 'undefiniert' sein. Normalerweise (nicht immer gedacht) reicht es aus, Tests wie if (document.getElementById('something')) durchzuführen.

2
Robusto

Die sauberste Version ist besonders gut, wenn Sie nur den .value vom Element abrufen möchten.

document.getElementById('elementsid') ? function_if_exists(); function_if_doesnt_exists();
0
Pedro Pereira

Ja. Versuchen Sie Folgendes. Eine langsame Bewertung sollte verhindern, dass der zweite Teil der Bedingung bewertet wird, wenn der erste Teil falsch/null ist:

var someval = document.getElementById('something')
if (someval && someval.value <> '') {
0
Fosco

jquery gibt Ihnen dieses und mehr ...

if($("#something").val()){ //do stuff}

Ich habe ein paar Tage gebraucht, um es abzuholen, aber es bietet Ihnen so viel mehr Funktionalität. Ein Beispiel unten.

jQuery(document).ready(function() {
    /* finds closest element with class divright/left and 
    makes all checkboxs inside that div class the same as selectAll...
    */
        $("#selectAll").click(function() {
        $(this).closest('.divright').find(':checkbox').attr('checked', this.checked);
    });
});
0
NimChimpsky