我需要不断检查主页MainContainer维度上的修改,当发生这种情况时,我会将其尺寸固定为大于其中的最大元素(包装所有元素)。
如果还有其他方法可以解决这个问题。困扰我的是改变一行的效果。
我的代码是:
var pageMaxWidth = 0;
var pageMaxHeight = 0;
(function fixWidth()
{
var intervalCounter = 0;
var interval = setInterval(function(){
var intervalMaxWidth = 0;
var intervalMaxHeight = 0;
$("#MainContainer table").each(function(index,elem){
if($(elem).width()>intervalMaxWidth)
{
intervalMaxWidth=$(elem).width();
//console.debug("new interval width");
}
if($(elem).height()>intervalMaxHeight)
{
intervalMaxHeight=$(elem).height();
//console.debug("new interval height");
}
});
if(pageMaxWidth!=intervalMaxWidth)//I'm the referred if
{
$("#MainContainer").width(intervalMaxWidth);
pageMaxWidth=intervalMaxWidth;
console.debug("width fixed");
}
if(pageMaxHeight!=intervalMaxHeight)
{
$("#MainContainer").height(intervalMaxHeight);
pageMaxHeight=intervalMaxHeight;
console.debug("height fixed");
}
},500);
})();
如果在评论中if(我是被推荐的if)我改变了:
$("#MainContainer").width(intervalMaxWidth);
到
$("#MainContainer").width(intervalMaxWidth+40);
并在Chrome中运行脚本,它将始终增加MainContainer宽度,这意味着它将始终评估为true pageMaxWidth!=intervalMaxWidth
。如果我没有更改intervalMaxWidth值,怎么会发生这种情况呢?但它实际上添加了40,因为我通过控制台调试检查。
在FireFox中没有发生
答案 0 :(得分:0)
我能想到的唯一解释是:
if($(elem).width()>intervalMaxWidth)
正在为其中一个元素执行,并在if条件中修改intervalMaxWidth。