2012-08-30 10 views
16

Estoy escribiendo una secuencia de comandos para ocultar/mostrar el menú, pero tengo algunos problemas.No se puede establecer la propiedad 'pantalla' de indefinido

function displayMenu() { 
//var classMenu = event.target.className; 
//classMenu += 'Menu'; 
    //document.getElementsByClassName(classMenu).style.display = 'block'; 
document.getElementsByClassName('btn-pageMenu').style.display = 'block'; 
    } 

En comentario, lo que quiero hacer finalmente, pero incluso si lo intento con var estático, no está funcionando. En el CSS:

fieldset.toolsbox ul.btn-pageMenu {display:none;} 

que trato como esto también:

.btn-pageMenu {display:none;} 

No más éxito. ¿Alguien tiene una sugerencia? Estoy aprendiendo JS y no encuentro errores cuando comparo con otros scripts similares.

Gracias por su ayuda :)

+0

¿Por qué no usar jQuery para ocultar y mostrar? Pero de todos modos asegúrate de enfocarte de la manera correcta. ¿su elemento realmente tiene la clase de "btn-pageMenu" o tal vez hay una identificación que puede usar? –

+1

Porque prefiero hacer mi propia secuencia de comandos JS que utilizar una biblioteca completa solo para algunas funciones. Y sí, estoy seguro de usar clase. – TikTaZ

+0

@TikTaZ: FYI 'fieldset.toolsbox ul # btn-pageMenu {display: none;}' en su css habilitará el uso de 'getElementById ('btn-pageMenu')', o 'document.querySelector ('# btn- pageMenu ') ' – KooiInc

Respuesta

46

document.getElementsByClassName('btn-pageMenu') entrega una nodeList. Deberá utilizar: document.getElementsByClassName('btn-pageMenu')[0].style.display (si es el primer elemento de esa lista que desea cambiar

Si desea cambiar style.display para todos bucle de nodos a través de la lista:.

var elems = document.getElementsByClassName('btn-pageMenu'); 
for (var i=0;i<elems.length;i+=1){ 
    elems[i].style.display = 'block'; 
} 

a ser completa: si el uso de jQuery es tan simple como:

​$('.btn-pageMenu').css('display'​​​​​​​​​​​​​​​​​​​​​​​​​​​,'block');​​​​​​ 
+0

Oh, lamento perder tu tiempo, en mi mente, ya que especifico un nombre de clase unic que pensé que encontraría como ID, olvida que la clase puede ser mutiple para que devuelva una lista. Gracias por ayudar :) – TikTaZ

+2

Hola @TikTaz, responder una pregunta rara vez es una pérdida de tiempo. Creo que otras personas también se pueden beneficiar de las respuestas. – KooiInc

0

he encontrado esta respuesta en el sitio https://plainjs.com/javascript/styles/set-and-get-css-styles-of-elements-53/

en este bacalao. e añadimos varios estilos en un elemento:

let 
 
    element = document.querySelector('span') 
 
    , cssStyle = (el, styles) => { 
 
     for (var property in styles) { 
 
      el.style[property] = styles[property]; 
 
     } 
 
    } 
 
; 
 

 
cssStyle(element, { background:'tomato', color: 'white', padding: '0.5rem 1rem'});
span{ 
 
font-family: sans-serif; 
 
color: #323232; 
 
background: #fff; 
 
}
<span> 
 
lorem ipsum 
 
</span>

Cuestiones relacionadas