2017-06-30 3 views
-1

Auf Firefox 54 zeigen die erste und die dritte Checkbox ihren inneren Text, während die zweite nicht, aber alle haben die gleiche Struktur, nur mit verschiedenen Methoden konstruiert. Was ist der Grund für dieses Verhalten?JavaScript/HTML inkonsistente Anzeige des Kontrollkästchens innerer HTML

input2 = document.getElementById("input2"); 
 
input2.innerHTML = "Check me inner HTML"; 
 
input2.innerText = "Check me inner Text"; 
 

 
input3 = document.createRange().createContextualFragment("<input type='checkbox'>Check me fragment</input>"); 
 
document.body.appendChild(input3);
<input type="checkbox">Check me HTML</input> 
 
<input type="checkbox" id="input2"></input>

+1

Browser dürfen ungültige HTML behandeln, wie sie es wünschen, gibt es keine Regeln. ['input'] (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input) ist ein leeres Element, es" _muss ein Start-Tag haben und darf kein End-Tag_ haben " . – Teemu

+1

'' ist ein void-Element und hat nicht einmal das schließende Tag – charlietfl

+1

HTML [''] (https://developer.mozilla.org/en/docs/Web/HTML/Element/Input) -Elemente sind leere Elemente und darf kein End-Tag haben. – PeterMader

Antwort

1

<input> Elemente haben keine "innere HTML". Die resultierende HTML-Struktur ist:

<input type="checkbox">Check me HTML 
<input type="checkbox" id="input2">Check me inner Text</input> 
<script type="text/javascript">/* your js */</script> 
<input type="checkbox">Check me fragment 

Die zweite ist nicht gültig HTML. Der "innere" Text wird nicht gerendert.

Ich bin mir nicht ganz sicher, warum die dritte richtig rendert. Der Browser kann das Fragment möglicherweise reparieren, bevor es in der Seite enthalten ist.
(Die </input> kann nur entfernt werden, so dass der HTML-Code gültig ist)

Verwandte Themen