Tengo un tema de wordpress responsivo. El menú está codificado para ocultarse cuando el tamaño de la pantalla es inferior a 740. Sin embargo, solo lo hace correctamente en la página de inicio. Si voy a cualquier otra página, el menú colapsa pero no se oculta y aparece este error: “Error de tipo no detectado: no se puede leer la propiedad ‘clientWidth’ de nulo”
Aquí está el código, lo tengo llamado en el archivo header.php del tema:
var ww = document.body.clientWidth;
$(document).ready(function() {
adjustMenu();
$(".cat").click(function(e) { // cat class
e.preventDefault();
$(this).toggleClass("active");
$(".sf-menu").toggle();
});
});
function adjustMenu() {
if (ww <= 740) { //change this to your breakpoint
$('.sf-menu').hide();
$(".cat").show();
if (!$(".cat").hasClass("active")) {
$(".sf-menu").hide();
} else {
$(".sf-menu").show();
}
} else {
$('.sf-menu').show();
$(".cat").hide();
}
}
$(window).bind('resize orientationchange', function() {
ww = document.body.clientWidth;
adjustMenu();
});
intente agregar su script al final del documento. La razón es que, al principio, el ancho de su documento es cero, porque su contenido aún no está cargado, por lo que no hay nada que mostrar y, por lo tanto, su ancho es cero
-
¡Gracias! Solución tan fácil y simple.
– Gowri
23 de diciembre de 2014 a las 10:58
-
omg, tnx señor, fue tan fácil pero yo estaba bien en este problema ez, me avergüenzo =)))
– MPERSIA
23 de julio de 2020 a las 11:56
yo diria usar $(window).width();
de jquery. Devuelve el ancho de la ventana gráfica del navegador, que es equivalente o diría una mejor alternativa para el javascript tradicional.
Su código se verá algo como esto. Comprueba si funciona.
var ww = $(window).width();
$(document).ready(function() {
adjustMenu();
$(".cat").click(function(e) { // cat class
e.preventDefault();
$(this).toggleClass("active");
$(".sf-menu").toggle();
});
});
function adjustMenu() {
if (ww <= 740) { //change this to your breakpoint
$('.sf-menu').hide();
$(".cat").show();
if (!$(".cat").hasClass("active")) {
$(".sf-menu").hide();
} else {
$(".sf-menu").show();
}
} else {
$('.sf-menu').show();
$(".cat").hide();
}
}
$(window).bind('resize orientationchange', function() {
ww = document.body.clientWidth;
adjustMenu();
});
function adjustMenu() {
if (ww <= 740) { //change this to your breakpoint
$('.sf-menu').hide();
$(".cat").show();
if (!$(".cat").hasClass("active")) {
$(".sf-menu").hide();
} else {
$(".sf-menu").show();
}
} else {
$('.sf-menu').show();
$(".cat").hide();
}
}
$(window).bind('resize orientationchange', function() {
ww = $(window).width();
adjustMenu();
});
Avíseme si esa solución funciona … y vote Up si lo encuentra útil 🙂
– Raúl Patil
08/04/2013 a las 10:15