¿Qué falla en el array? ¿

¿Qué es lo que me falla en esto?:
nombre= new Array('a1' ,'a2', 'a3','a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'a10');
function encender0() {
nombre[0].style.backgroundColor = 'blue'
}
setTimeout('encender0()',2000)
Me sale: nombre.0.style es nulo o no es un objeto. Y no puedo hacer nada. ¿Cuál es la manera correcta de hacer esto?
Respuesta
1
Como el error mismo indica lo que esta pasando es que el array nombre es un array de cadenas de texto 'a1','a2' etc... no son OBJETOS que es justo lo que dice el error. Solo un objeto puede tener variables, objetos o métodos referenciables con un punto.
Lo que creo que intentas es tener una serie de cadenas en la página que cambien su fondo a azul cada 2 segundos pero esta no es la forma correcta.
Lo que deberías hacer es meter todas esas cadenas en un tag de html por ejemplo <span id='cadenas_parpadeantes'>cadenas</span> que sirve para crear divisiones en una página también serviría <div> o meterlas en una celda. Si te fijas le he añadido una etiqueta id, esta etiqueta la utilizaremos para refirirnos desde javascript a las cadenas citadas.
El código cambiaría a
function encender(){
document.all.cadenas_parpadeantes.style.background="blue";
}
Nota: Esta forma de cambiar el background no te funcionara en netscape 4, creo que con los demás no hay problemas.
Nota2: Si lo que quieres es que parpadeen acuérdate de hacer la función apagar().
Suerte
En un principio, ya tenia los divs echos con los ids de los arrays:
<div id="a1">ejemplo div</div>
Y así con cada uno y a pesar de que pongo el código script después, no me funciona. ¿Es por qué si pones en un array los nombres no funciona?
<script>
nombre= new Array('a1' ,'a2', 'a3','a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'a10');
function encender0() {
nombre[0].style.backgroundColor = 'blue'
}
setTimeout('encender0()',2000)
<script>
Si ya tenias los id, perfecto es la forma correcta, el fallo que te da es que cuando tu declaras el array y por ejemplo pones
nombre[0]='a1'
No haces referencia al id que hay en la página simplemente dices que nombre[0] es igual a la cadena 'a1' y las cadenas no tienen estilo. La forma de hacerlo no esta mal pero prueba esto
nombre[0] = document.all.a1;
Con esto nombre[0] ya no es una cadena, es un objeto div de la página y por tanto ya tiene el objeto style.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas