Necesito establecer el texto dentro de un elemento DIV dinámicamente. ¿Cuál es el mejor enfoque seguro para el navegador? Tengo prototypejs y scriptaculous disponibles.
<div id="panel">
<div id="field_name">TEXT GOES HERE</div>
</div>
Así se verá la función:
function showPanel(fieldName) {
var fieldNameElement = document.getElementById('field_name');
//Make replacement here
}
javascript
html
dom
sblundy
fuente
fuente
Respuestas:
Usaría el
update
método de Prototype que admite texto sin formato, un fragmento de HTML o cualquier objeto de JavaScript que defina untoString
método.fuente
$("field_name").text("new text");
Simplemente puede usar:
fuente
element.innerHTML = "<script>doSomethingMalicious()</script>";
No será una buena idea.element.innerHTML = "& neither will this";
Actualizado para todos los que lean esto en 2013 y posteriores:
Esta respuesta tiene mucho SEO, pero todas las respuestas están muy desactualizadas y dependen de las bibliotecas para hacer cosas que todos los navegadores actuales hacen de forma inmediata.
Para reemplazar el texto dentro de un elemento div, use Node.textContent, que se proporciona en todos los navegadores actuales.
fuente
textContent
es un método superior parainnerHTML
: es más rápido, más seguro y más apropiado cuando no intenta insertar deliberadamente el marcado HTML.Las ventajas de hacerlo de esta manera:
Si fuera a usar una biblioteca javascript, usaría jQuery y haría esto:
Tenga en cuenta que el comentario de @AnthonyWJones es correcto: "field_name" no es una identificación particularmente descriptiva o un nombre de variable.
fuente
Una de las características ingeniosas de Prototype es que
$('field_name')
hace lo mismo quedocument.getElementById('field_name')
. Úsalo! :-)La respuesta de John Topley usando la
update
función de Prototype es otra buena solución.fuente
$
busca un elemento por ID. No está basado en un selector como lo es jQuery. api.prototypejs.org/dom/dollarLa respuesta rápida es usar innerHTML (o el método de actualización del prototipo que es casi lo mismo). El problema con innerHTML es que necesita escapar del contenido asignado. Dependiendo de sus objetivos, deberá hacerlo con otro código O
en IE: -
en FF: -
(En realidad, de FF tiene el siguiente presente por código)
Ahora solo puedo usar innerText si necesita el soporte de navegador más amplio posible, entonces esta no es una solución completa pero tampoco está usando innerHTML en bruto.
fuente
Si realmente quieres que continuemos donde lo dejaste, puedes hacer:
fuente
nodeValue también es una propiedad DOM estándar que puede usar:
fuente
fuente
Si está dispuesto a comenzar a usar mucho JavaScript en su sitio, jQuery hace que jugar con DOM sea extremadamente simple.
http://docs.jquery.com/Manipulation
Lo hace tan simple como: $ ("# nombre-campo"). Text ("Algún texto nuevo");
fuente
Utilice innerText si no puede asumir la estructura: use los datos de Text # para actualizar la prueba de rendimiento de texto existente
fuente
fuente
Aquí hay una manera fácil de jQuery :
fuente
En HTML pon esto
En Javascript pon esto
fuente