0

我需要不断检查页面 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 中不会发生

4

1 回答 1

0

我能想到的唯一解释是这条线:

if($(elem).width()>intervalMaxWidth)

正在为其中一个元素执行并正在修改 if 条件内的 intervalMaxWidth。

于 2013-06-27T17:18:57.837 回答