2012-06-22 16 views
5

Soy muy nuevo en JS, y entiendo que mi script es probablemente terrible, pero todo funciona bien en Safari y Chrome, pero no en Firefox.Error de Javascript "no definido" en Firefox

Entre otras cosas, estoy llamando a dos funciones para ocultar y revelar un controlador de película Quicktime personalizado colocando una "máscara" sobre la parte superior (sé que un alternar sería una solución más elegante, pero no pude t obtener esa función para que funcione de la manera que yo quería). De todos modos, esto es lo que ve el Javascript como:

function revealControls(){ 
     document.getElementById("controlsCover"); 
     controlsCover.style.display ="none" 
} 

function hideControls(){ 
     document.getElementById("controlsCover"); 
     controlsCover.style.display ="block" 
} 

Voy a llamar a estas funciones con diferentes eventos de ratón aplicados a varios divs, tales como:

<div id = "controls" onmouseout = "hideControls()"> 

Firefox me está diciendo

"Error: controlsCover is not defined", 

y no tengo idea de cómo definir el elemento como nulo.

Cualquier ayuda sería apreciada. Estoy seguro de que es algo muy simple, pero prácticamente no tengo experiencia con Javascript. Todavía.

+0

cómo diablos haría este trabajo bajo Safari o Chrome ..... – Sebas

+2

http://chat.stackoverflow.com/rooms/17/conversation/noob-javascript-resources http: //chat.stackoverflow .com/rooms/17/conversation/learn-javascript-videos http://stackoverflow.com/tags/javascript/info todos son excelentes lugares para comenzar a aprender y recoger recursos. ALÓJESE DE W3SCHOOLS !!!!! MDN es tu nuevo amigo. – rlemon

Respuesta

6

Primero debe crear la variable controlsCover para referenciarla.

Cuando use por primera vez document.getElementById("controlsCover"), esto devolverá un elemento HTML que pasará a una variable para usar.

Si elimina el comentario de console.log, verá lo que hay dentro de la variable.

function revealControls()  
{ 
    var controlsCover = document.getElementById("controlsCover"); 
    /* console.log(controlsCover) */ 
    controlsCover.style.display ="none" 
} 

function hideControls() 
{ 
    var controlsCover = document.getElementById("controlsCover"); 
    controlsCover.style.display ="block" 
} 
+0

Entonces, Chrome y Safari son lo suficientemente inteligentes como para comprobar si una variable existe como elemento HTML antes de arrojar un error 'indefinido'. – Amberlamps

+2

llegó más rápido que yo! @Amberlamps sin ver el código completo es difícil de decir por qué funciona en los otros navegadores, –

+0

@AbePetrillo - Lo intenté: p – Glycerine

2

necesita asignar valor document.getElementById retorno a controlsCover variables:

var controlsCover = document.getElementById("controlsCover"); 

fijo será:

function revealControls() { 
    var controlsCover = document.getElementById("controlsCover"); 
    controlsCover.style.display ="none" 
} 

function hideControls() { 
    var controlsCover = document.getElementById("controlsCover"); 
    controlsCover.style.display ="block" 
} 
0

Prueba esto:

var ele =document.getElementById("controlsCover"); 
ele.style.display = "none"; 
0

Prueba esto:

function revealControls()  
{ 
    var oControlsCover = document.getElementById("controlsCover"); 

    if (oControlsCover) { 
    oControlsCover.style.display ="none"; 
    } 
} 

function hideControls() 
{ 
    var oControlsCover = document.getElementById("controlsCover"); 

    if (oControlsCover) { 
    oControlsCover.style.display ="block"; 
    } 
} 
Cuestiones relacionadas