2010-02-12 16 views
9

bien soy nuevo en javascript, pero estoy tratando de cambiar el innerHTML de una etiqueta div, aquí está mi guión y no su trabajo:Javascript cambio innerHTML

<head> 
<script type="text/javascript"> 
function var1() { 
document.getElementById('test').innerHTML = 'hi'; 
} 
window.onLoad = var1(); 
</script> 
</head> 
<body> 
<div id="test">change</div> 
</body> 

que deben trabajar, pero por alguna razón no es, cualquier ¿ayuda?

+0

La frase "no trabajar" abarca una gran cantidad de escenarios. ¿Cuál es exactamente el error? –

+0

no hay ningún error, simplemente no está cambiando el texto dentro de la div 'prueba'. Acabo de probar y si pongo el javascript debajo del div, funciona. ¿Hay alguna manera de hacerlo funcionar cuando está arriba del div como lo he mostrado? – David

Respuesta

15

En lugar de asignar var1 a window.onload, está llamando a la función y almacenando el resultado. Además, esto podría ser obvio, pero var1 parece ser un nombre extraño para una función. Prueba esto:

function var1() { 
    document.getElementById('text').innerHTML = 'hi'; 
} 

window.onload = var1; 

Nota de la carcasa onload, así como los paréntesis que falta después de var1.

+1

no debe usar innerHTML no es estándar y es una mala práctica. Es mucho más seguro usar métodos DOM como createElement, createTextNode y appendChild. –

1

Obtendrá un elemento con una identificación de "prueba", pero no hay ningún elemento con esa identificación en su html. Sin embargo, hay uno llamado "texto".

+0

oh lo siento, lo arreglé y no copié y pegué desde mi texto que acaba de escribir aquí, mi mal. pero todavía no funciona – David

5

correcta:

window.onload = var1; 

en su valor de ejemplo de window.onload es undefined porque la función var1 no devuelve nada (undefined). Debe establecer la propiedad onload para la función var1, no como resultado de la función de llamada var1()

+0

todavía no funciona .. – David

+1

@David: Observe también el cambio de onload a onload. Lo intenté y funciona bien. – Guffa

0

Intenta cambiar onLoad para cargar.

 
function var1() { 
    document.getElementById('test').innerHTML = 'hi'; 
} 
window.onload = var1; // onload 
+0

Es mucho más seguro usar métodos DOM como createElement, createTextNode y appendChild. –

+0

Puede verificar que esto no resuelva el problema. Ejecuta la función antes de la carga, que es involuntaria. – brunoais

+0

@brunoais actualizado. el problema al que estaba tratando de llamar la atención era que estaba el camelCase onload. – johnmdonahue

5

usando .innerHTML es non-standard, y una terrible práctica por muchas razones. debe crear un nuevo elemento utilizando los métodos estándar adecuados y agregarlo al árbol donde lo desee

+6

No. El uso de 'innerHTML' es la forma más rápida. –

+1

no significa que no es una mala práctica –

+3

No es una práctica incorrecta, por lo tanto, puede conducir a un comportamiento indefinido, es decir: fallas de seguridad, por lo tanto, es una mala práctica. No puedo creer que alguien votó por esto ... –

1

Su ejemplo funcionará si cambia la "L" mayúscula a "L" en minúscula en "onLoad" y quita el paréntesis después de var1 donde actualmente tiene window.onLoad = var1();

0

A continuación se muestra otra versión más simple

<body> 
 
<div id="test">change</div> 
 
    <script type="text/javascript"> 
 
    document.getElementById('test').innerHTML = 'hi'; 
 
</script> 
 
</body>

Cuestiones relacionadas