En lugar de buscar tediosamente soluciones alternativas para cada tipo de atributo y evento cuando se usa la siguiente sintaxis:
elem = document.createElement("div");
elem.id = 'myID';
elem.innerHTML = ' my Text '
document.body.insertBefore(elem,document.body.childNodes[0]);
¿Hay alguna manera en la que pueda declarar todo el elemento HTML como una cadena? me gusta:
elem = document.createElement("<div id='myID'> my Text </div>");
document.body.insertBefore(elem,document.body.childNodes[0]);
javascript
html
El flash
fuente
fuente
Tu quieres esto
fuente
body
elemento, pero funciona bien en cualquier otro elemento.<body>
. De hecho, ejecutarlo<body>
es mi método estándar para inyectar cosas como hojas de estilo en páginas web a través de la consola. ¿Qué problema tienes?<body>
no estuviera definido, también lo serían todos los demás elementos, por lo que probablemente este no sea un problema de Phill.Eche un vistazo a insertAdjectedHTML
position es la posición relativa al elemento al que está insertando adyacente:
'beforebegin' Antes del elemento en sí
'afterbegin' Justo dentro del elemento, antes de su primer hijo
'beforeend' Justo dentro del elemento, después de su último hijo
'afterend' Después del propio elemento
fuente
En JavaScript de la vieja escuela, podría hacer esto:
En respuesta a tu comentario:
Sin embargo, debe inyectar el nuevo HTML en el DOM; por eso
innerHTML
se usa en el ejemplo de JavaScript de la vieja escuela. ElinnerHTML
delBODY
elemento se antepone con el nuevo HTML. Realmente no estamos tocando el HTML existente dentro deBODY
.Volveré a escribir el ejemplo mencionado anteriormente para aclarar esto:
El uso de un marco de JavaScript haría que este código fuera mucho menos detallado y mejoraría la legibilidad. Por ejemplo, jQuery le permite hacer lo siguiente:
fuente
document.getElementsByTagName('body')[0]
de hecho puede ser reemplazado pordocument.body
, buen punto. Sin embargo, si desea anteponer o agregar el nuevo HTML a otro elemento existente en lugar del BODY, tendrá que usardocument.getElementById()
y / odocument.getElementsByTagName()
; por eso lo usé en el ejemplo.Que yo sepa, que, para ser justos, es bastante nuevo y limitado, el único problema potencial con esta técnica es el hecho de que no puede crear dinámicamente algunos elementos de la tabla.
Utilizo un formulario para crear plantillas agregando elementos de "plantilla" a un DIV oculto y luego uso cloneNode (verdadero) para crear un clon y agregarlo según sea necesario. Tenga en cuenta que debe asegurarse de reasignar las identificaciones según sea necesario para evitar la duplicación.
fuente
Como otros dijeron , se puede emular la conveniente funcionalidad de prefijo de jQuery :
Si bien algunos dicen que es mejor no "meterse" con innerHTML , es confiable en muchos casos de uso, si sabe esto:
https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML
O:
insertAdjacentHTML
es probablemente una buena alternativa: https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjectedHTMLfuente
Si desea insertar código HTML dentro de la etiqueta de la página existente, use Jnerator . Esta herramienta fue creada especialmente para este objetivo.
En lugar de escribir el siguiente código
Puedes escribir una estructura más comprensible
fuente