简单的javascript行在chrome和firefox中表现不同

时间:2013-06-27 17:13:10

标签: javascript jquery google-chrome

我需要不断检查主页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中没有发生

1 个答案:

答案 0 :(得分:0)

我能想到的唯一解释是:

if($(elem).width()>intervalMaxWidth)
正在为其中一个元素执行

,并在if条件中修改intervalMaxWidth。