html - Hur kan jag testa om ett element är självlutat i JavaScript?
Hur kan jag testa om ett element är självavslutande i JavaScript? Här är ett exempel på ett element som är självavslutande:
<input type="text" value="I'm self-enclosed.">
Och här är ett exempel på ett element som inte är:
<div>I'm not self-enclosed.</div>
Hur kan jag skilja mellan dem i JavaScript?
Svar #1
Jag föredrar att kolla tagName mot en lista av kända tomma element, än att lita på att innerHTML returnerar något med >< i det
function isSelfEnclosed(element) {
return ['area', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param'].indexOf(element.tagName.toLowerCase()) != -1;
}
FIOL
Svar #2
Svara & Demo
Du kan upptäcka om ett element är självstängt via följande funktion, här är en JSFiddle med demon.
HTML
<div>False</div><br>
<input type="text" value="True"/><br>
Två enkla HTMLElement's, den första är inte självstängande, den andra är det.
JavaScript
function isSelfEnclosed(element) {
var elem = document.createElement( element.tagName );
return elem.outerHTML.indexOf( "><" ) == -1;
}
isSelfEnclosed( div )-> False, under antagandet att div är div-elementet.
isSelfEnclosed( input )-> Sant, under förutsättning att input är inmatningselementet.
Förklaring
Vi skapar ett nytt element efter element's taggnamn, och vi kontrollerar om dess .outerHTML har "><" i sig.
Anteckning
Jag gjorde den här självbesvarade frågan eftersom det enda andra svaret jag hittade inte var exakt idiotsäkert. Hur som helst är det en enkel funktion med ett enkelt syfte, hoppas det hjälper någon!
Uppdateringar
- Uppdaterad felaktig kod som använder
cloneNode( true )istället för baracloneNode()(17:01 05/01/15) - Uppdaterad funktion för att mer effektivt hantera problemet (17:09 05/01/15)
