Problema de etiqueta de HTML de cierre

Me pregunto por qué las tags HTML no reciben una etiqueta de cierre como otras tags HTML y qué podría salir mal si cerramos la etiqueta de entrada.

Intenté buscar en Google y encontré el estándar para escribir una etiqueta de entrada como esta no cerrarla con .

Personalmente, sentí el problema cuando creé una etiqueta de entrada para los botones de Radio usando

 var DOM_tag = document.createElement("input"); 

Este aunque creó el botón de TextNode pero el TextNode que TextNode al botón de radio con

 document.createTextNode("Radio Label"); 

No funciona. Simplemente muestra el botón de opción sin Radio Label como en este caso. Aunque puedo ver el código completo:

 Radio Label 

¿Alguien puede explicar por favor?

PD
El problema principal que se me ocurrió es el cierre automático de la etiqueta de entrada como mencioné en la pregunta, ya que estoy usando var DOM_tag = document.createElement("input"); que crea automáticamente una etiqueta de cierre. ¿Qué debo hacer al respecto?

Estos son elementos vacíos. Esto significa que no están diseñados para contener texto u otros elementos, y como tales no necesitan, y de hecho, no pueden tener , una etiqueta de cierre en HTML. 1

Sin embargo, pueden tener una asociada a ellos:

   

Los botones de opción por naturaleza no pueden contener texto de todos modos, por lo que no tendría sentido que acepten texto u otros elementos como contenido. Otro problema con un control que acepta texto como entrada: ¿debería su contenido textual ser su valor o su etiqueta? Para evitar la ambigüedad, tenemos un elemento que hace exactamente lo que dice en la lata, y tenemos un atributo de value para denotar el value de un control de entrada.


1 XHTML es diferente; mediante reglas XML, todas las tags deben abrirse y cerrarse; esto se hace con la syntax de acceso directo en lugar de una etiqueta , aunque esta última es igualmente aceptable:

   

El origen está en el concepto de elemento vacío en SGML, y la idea era que algunos elementos actúen como marcadores de posición para el contenido que se insertará desde una fuente externa o por el entorno. Esta es la razón por la que img y input , por ejemplo, se declararon como vacíos en HTML o, más exactamente, como que tienen contenido declarado VACÍO (es decir, no hay contenido posible, como opuesto a los elementos que simplemente tienen contenido vacío). Para una explicación más larga, vea mi página Elementos vacíos en SGML, HTML, XML y XHTML .

La implicación es que la etiqueta de inicio para dicho elemento también actúa como etiqueta de cierre. Se espera que el software que procesa documentos SGML o HMTL conozca de la definición del tipo de documento (DTD) qué tags tienen esta propiedad. En la práctica, dicha información está incorporada en los navegadores web. El uso de una etiqueta final como no es válido, pero los navegadores simplemente omiten la etiqueta final no reconocida o espuria.

En XML, por lo tanto, en XHTML, las cosas son diferentes, porque XML es una variante fuertemente simplificada de SGML, que se procesa de manera simplista. El software que procesa XML debe poder realizar todo el análisis sintáctico sin DTD, por lo que XML requiere el cierre de tags para todos los elementos, aunque usted puede (y, por compatibilidad, debería hacerlo principalmente) usar una syntax especial como como abreviación para . Pero XHTML todavía no permite contenido entre las tags.

Por lo tanto, no puede especificar la etiqueta de un elemento de entrada dentro del elemento en sí, ya que no puede contener ningún contenido. Puede usar el title , el value o (en HTML5) atributos de placeholder para asociar textos con él, en diferentes sentidos, pero para tener un contenido visible normal como etiqueta, debe estar en un elemento diferente. Como se describe en otras respuestas, es aconsejable colocarlo en un elemento de label y definir la asociación con id y for atributos.

es una etiqueta vacía, ya que no está diseñada para tener ningún contenido o una etiqueta de cierre. Para el cumplimiento, puede indicar el final de la etiqueta utilizándola así:

  

que es la forma compatible con XHTML para cerrar una etiqueta que no tiene contenido. Lo mismo ocurre con la etiqueta .

Para etiquetar un botón de opción, probablemente sea mejor que use la como lo describe la respuesta de BoltClock.

Puedes usar

 var label = document.createTextNode("Radio Label"); DOM_tag.parentElement.insertBefore(label,DOM_tag); 

poner la etiqueta al lado del botón de radio.

Usar la combinación createElement / createTextNode funciona mejor.

 $('#list-consultant').append( $(document.createElement('div')).addClass('checkbox').append( $(document.createElement('label')).append( $(document.createElement('input')).prop({ type: 'checkbox', checked: 'checked' }), $(document.createTextNode('Ron Jeremy')) ) ) ); 

El fragmento de arriba producirá:

 

Puedes probar:

 var label = document.createTextNode("Radio Label"); document.createElement("input").prop({type="text"}); document.write(input.append(label)); 

podría funcionar, quizás no. (No funcionó para mí, pero no puedo entender POR QUÉ no … Pensé que sí). Si eso ayuda, genial. (Todavía estoy aprendiendo Javascript.)

De lo contrario, mantente con la respuesta estándar de usar:

   

Eso es lo que normalmente haría. ¡Aclamaciones!