Chiusura del problema di tag HTML

Mi chiedo perché i tag HTML non ottengono un tag di chiusura come altri tag HTML e cosa potrebbe andare storto se chiudiamo il tag di input?

Ho provato a Google e ho trovato lo standard per scrivere un tag di input come questo non chiudendolo con un .

Personalmente ho sentito il problema quando ho creato un tag di input per i pulsanti Radio

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

Questo però ha creato il pulsante di TextNode ma il TextNode I è stato aggiunto al pulsante di TextNode

 document.createTextNode("Radio Label"); 

non funziona. Mostra semplicemente il pulsante radio senza Radio Label come in questo caso. Anche se posso vedere il codice completo:

 Radio Label 

Qualcuno può spiegare per favore?

PS
Il problema principale che mi è accaduto è la chiusura automatica del tag di input come ho menzionato nella domanda poiché sto usando var DOM_tag = document.createElement("input"); che crea automaticamente un tag di chiusura. Cosa dovrei fare per quello?

Solutions Collecting From Web of "Chiusura del problema di tag HTML"

Questi sono elementi vuoti. Ciò significa che non sono progettati per contenere testo o altri elementi e, in quanto tali, non hanno bisogno – e in effetti non possono avere – di un tag di chiusura in HTML. 1

Tuttavia, possono avere un associato a loro:

   

I pulsanti di scelta della natura non possono contenere comunque del testo, quindi non avrebbe senso che accettassero testo o altri elementi come contenuti. Un altro problema con un controllo che accetta il testo come input: il suo contenuto testuale dovrebbe essere il suo valore o la sua etichetta? Per evitare ambiguità, abbiamo un elemento che fa esattamente ciò che dice sullo stagno e abbiamo un attributo value per indicare il valore di un controllo di input.


1 XHTML è diverso; con le regole XML, ogni tag deve essere aperto e chiuso; questo viene fatto con la syntax di scelta rapida invece di un , sebbene quest’ultimo sia ugualmente accettabile:

   

L’origine è nel concetto di elemento vuoto in SGML e l’idea era che alcuni elementi fungessero da segnaposto per i contenuti che verranno inseriti da una fonte esterna o dall’ambiente. Questo è il motivo per cui img e input , ad esempio, sono stati dichiarati vuoti in HTML, o, più esattamente, come aventi contenuto dichiarato EMPTY (cioè nessun contenuto è possibilmente, come opposto a elementi che hanno solo casualmente contenuti vuoti). Per una spiegazione più lunga, vedere la mia pagina Elementi vuoti in SGML, HTML, XML e XHTML .

L’implicazione è che il tag di inizio per tale elemento agisce anche come tag di chiusura. Il software che elabora i documenti SGML o HMTL è tenuto a sapere dalla Document Type Definition (DTD) che i tag hanno questa proprietà. In pratica, tali informazioni sono incorporate nei browser web. L’utilizzo di un tag di chiusura come non è valido, ma i browser ignorano il tag di fine non riconosciuto o spurio.

In XML, quindi in XHTML, le cose sono diverse, perché XML è una variante fortemente semplificata di SGML, progettata per essere elaborata in modo semplicistico. Il software che elabora XML deve essere in grado di eseguire tutte le analisi senza DTD, quindi XML richiede la chiusura di tag per tutti gli elementi, sebbene sia ansible (e, per compatibilità, in gran parte dovrebbe ) utilizzare una syntax speciale come come abbreviazione per . Ma XHTML non consente ancora alcun contenuto tra i tag.

Quindi non è ansible specificare l’etichetta per un elemento di input all’interno dell’elemento stesso, in quanto non può avere alcun contenuto. Puoi usare il title , il value o (in HTML5) gli attributi placeholder per associare i testi ad esso, in diversi sensi, ma per avere un normale contenuto visibile come etichetta, deve essere in un elemento diverso. Come descritto in altre risposte, è consigliabile inserirlo in un elemento label e definire l’associazione con id e for attributi.

è un tag vuoto, nel senso che non è progettato per avere alcun contenuto o un tag di chiusura. Per conformità, puoi significare la fine del tag usandolo in questo modo:

  

che è il modo conforms XHTML per chiudere un tag che non ha contenuto. Lo stesso vale per il tag .

Per etichettare un pulsante di opzione, è preferibile utilizzare il tag come descritto nella risposta di BoltClock.

Puoi usare

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

per mettere l’etichetta accanto al pulsante di opzione.

L’utilizzo della combinazione createElement / createTextNode funziona meglio.

 $('#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')) ) ) ); 

Lo snippet sopra riportato produrrà:

 

Puoi provare:

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

potrebbe funzionare, potrebbe non. (Non ha funzionato per me, ma non riesco a capire PERCHÉ non .. Ho pensato che sarebbe.) Se questo aiuta, grande. (Sto ancora imparando Javascript).

Altrimenti attenersi alla risposta standard dell’utilizzo:

   

Questo è quello che normalmente farei. Saluti!