2017-08-07 4 views
1

Ich habe ein Eingabeformular, z.Verwenden einer HTML-ID mit einem Punkt/Punkt in Javascript

<input type="checkbox" id="a.b"> 

Ich mag seinen Wert drucken, wenn ich darauf klicke mit der console.log() Javascript-Funktion.

Offensichtlich beschwert sich Javascript, dass ein undefined ist und dass die Eigenschaft b des Wertes nicht existiert. Die einzige Möglichkeit, dies zu tun, war, mein Feld umzubenennen, indem ich _ anstelle von a. (Zeitraum). Ich am Ende mit

<input type="checkbox" id="a_b" onclick="console.log(a_b.value)"> 

Gibt es einen besseren Weg? Kann ich Punkte in Bezeichnern entkommen lassen? Ich bin mir bewusst, dass . ist ein ungültiges Zeichen in Javascript Bezeichnern, aber es ist nicht in HTML. Kann ich dieses Problem mit jquery umgehen?

+0

Ein * besser * Weg ist, externe Ereignishandler –

+0

@SterlingArcher interessant zu verwenden. Hast du gute Hinweise? –

+1

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener Hier ist die MDN auf addEventListener, verwenden Sie diese Kombination mit 'this.value'. Inline-Ereignisse wie "onclick =" derp() "werden als schlechte Praxis angesehen. –

Antwort

4

Javascript verwendet . Notation, um Objekt zu verwenden. Und Sie können nur entkommen, wenn Sie als String verwenden. So ist die Antwort Nein. Ist

Warum nicht einfach this mit

<input type="checkbox" id="a.b" onclick="console.log(this.value)">

Wenn Sie mit ihm spielen, das ist in Ordnung, aber wie jemand bereits in Kommentaren darauf, nicht inline verwenden Veranstaltungen. Stattdessen Ereignisse auf Elemente hinzufügen

var checkbox = document.getElementById("a.b"); 
 
    checkbox.onchange = function() { 
 
    if(this.checked) { 
 
     console.log("checked"); 
 
     } else { 
 
     console.log("un checked"); 
 
     } 
 
    }
<input type="checkbox" id="a.b">

0

Sie können es von console.log(window["a.b"].value) tun zugreifen. Ich würde nicht vorschlagen, dass der direkte Zugriff auf Elemente nicht eine Best Practice ist, aber es wird tun, was Sie fragen.

Verwandte Themen