我想在用户访问网址中检查窗口的宽度,如果浏览器调整大小,则再次执行。
Q1。如果我只调用setcolamt()
中的函数resize()
,它将不会执行任何colmat
与以前相同的值,我不知道为什么?我必须再次提取所有代码,就像comment
然后colmat
将会更改一样。
Q2。为什么alert()
resize()
会弹出3次?
任何建议将不胜感激。
var colamt=0;
var winwid = $(window).width();
function setcolamt(){
if(winwid > 800){
colamt = 8;
}
else{
colamt = 4;
}
};
setcolamt();
alert(colamt);
$(window).resize(function(){
//var colamt=0;
//var winwid = $(window).width();
//function setcolamt(){
//if(winwid > 800){
// colamt = 8;
//}
//else{
// colamt = 4;
//}
//};
setcolamt();
alert(colamt);
});
答案 0 :(得分:2)
将var winwid = $(window).width();
移至setcolamt()
。
但请注意在检查前删除alert()
。它可能挂了。 console.log
比它好。
答案 1 :(得分:1)
初始调用后宽度不会更新,因为函数setcolamt()
不会修改winwid
的值。
var colamt=0;
var winwid = $(window).width();
function setcolamt(){
// Get the new winwid
winwid = $(window).width();
if(winwid > 800){
colamt = 8;
}
else{
colamt = 4;
}
};
除非您打算在winwid
之外使用setcolamt()
,否则无需在全局范围内声明它。相反,您可以在函数
function setcolamt(){
// declare winwid here with var, not outside.
// and no need to call $(window).width() outside...
var winwid = $(window).width();
if(winwid > 800){
colamt = 8;
}
else{
colamt = 4;
}
};
Here is the updated jsfiddle(使用console.log()
代替恼人的alert()
)
答案 2 :(得分:1)
答案 3 :(得分:0)
var winwid = $(window).width();
只会设置一次,因为它是目前编写的。在resize事件上,您需要注意窗口的更新大小。一种快捷方法是将var winwid = $(window).width()
移动到函数中。另一个是从传递给.resize()回调函数的事件中获取新宽度。