2017-10-06 2 views
-2

Ich habe eine Schaltfläche zum Umschalten in meiner Anwendung.Javascript - Event Event Listener überprüfen

Wenn die Schaltfläche eingeschaltet ist, möchte ich, dass der Wert auf 1 gesetzt wird, und wenn nicht, sollte der Wert Null sein. (0 = deaktiviert, 1 = aktiviert)

Das ist mein aktueller JavaScript-Code:

var checkbox = document.querySelector("input[name=checkbox]"); 

checkbox.addEventListener('change', function() { 
    if(this.checked) { 
     document.getElementById("activate").value = '1'; 
    } else { 
     document.getElementById("deactivate").value = '0'; 
    } 
}); 

Und das ist meine Umschaltknopf:

<div class="toggle"> 
    <label> 
     <input id="CheckAcitavtion" name="checkbox" type="checkbox"> 
     <span class="slider"></span> 
    </label> 
</div> 

Aber im Moment, wenn ich die Taste, um das Umschalten folgender Fehler erscheint:

Uncaught TypeError: Cannot set property 'value' of null at HTMLInputElement.

+4

Es gibt keine html-Element mit dem "aktivieren" oder "deaktivieren" id? – Wouter

+0

versuchen Sie es mit ** id ** anstelle von ** querySelector **. Ändern Sie es in 'element = document.getElementById (id);' und setzen Sie die 'id' auf die Schaltfläche eins. – ZombieChowder

+0

@ZombieChowder - Das Problem ist mit dem Code, der 'document.getElementById' verwendet. Die einzige Verwendung von 'document.querySelector' in der Frage ist absolut in Ordnung. – Quentin

Antwort

1

Die IDs, auf die Sie hingewiesen haben, existierten nicht, also habe ich gav e das Span-Element diese ID. Sie sollten auch innerHTML anstelle von value für ein Element verwenden, das nicht <input> ist.

var checkbox = document.querySelector("input[name=checkbox]"); 
 

 
checkbox.addEventListener('change', function() { 
 
    if(this.checked) { 
 
     document.getElementById("checkValue").innerHTML = '1'; 
 
    } else { 
 
     document.getElementById("checkValue").innerHTML = '0'; 
 
    } 
 
});
<div class="toggle"> 
 
    <label> 
 
    <input id="CheckAcitavtion" name="checkbox" type="checkbox"> 
 
    <span id="checkValue">0</span> 
 
    </label> 
 
</div>

+0

Das ist genau was ich wollte! Vielen Dank! – Trayer