Compruebe si un elemento se cierra utilizando una etiqueta discreta con JavaScript

Estoy obteniendo los nodos secundarios de en elemento y quiero verificar si las tags realmente pueden contener texto. Por ejemplo:


,

Debería devolver falso y

 , 
,
  • debería volverse verdadero. ¡Gracias!

      Desafortunadamente, no hay forma de detectar cómo se escribió una etiqueta en el código, ya que cuando se ejecuta JavaScript, el código HTML ya se ha analizado en objetos DOM.

      Sin embargo, su pregunta parece ser más acerca de si un tipo de elemento en particular puede contener texto. Esta simple prueba le dará una respuesta por tipo de elemento:

       function canElementContainText(tagname) { try { var e = document.createElement(tagname); return e.outerHTML.indexOf("/") != -1; } catch (ex) { return false; } } 

      Por ejemplo, canElementContainText("div") devuelve true y canElementContainText("img") devuelve false .

      A continuación, puede pasar la propiedad tagName de cualquier elemento a esta función para probarla.

       var result = canElementContainText(myElement.tagName); 

      La siguiente secuencia de comandos funciona bien (se resuelve el problema entre navegadores):

       function containTxt(tag) { var tags = /^(img|video)$/i; // any values which will be in `tags` set will be treated as they can't have a text value return !tags.test(tag); } console.log(containTxt("img")); // returns false console.log(containTxt("div")); // returns true 

      Podría usar RegEx:

       // these are samples, get elements text using element.innerHTML; var one = "Links"; var two = "Lorem ipsum dolor"; function check(str){ return str.match(/< [a-zA-Z]+.*>(.|\n)*< \/[a-zA-Z]+>/) ? true : false; } console.log(check(one)); // true console.log(check(two)); // false