Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在chrome和firefox中表现不同的简单javascript行_Javascript_Jquery_Google Chrome - Fatal编程技术网

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

在chrome和firefox中表现不同的简单javascript行,javascript,jquery,google-chrome,Javascript,Jquery,Google Chrome,我需要经常检查页面MainContainer维度上的修改,当这种情况发生时,我将修复其维度,使其大于其中最大的元素(包装所有元素) 如果有其他的方法,我真的不关心。困扰我的是换一行的效果 我的代码是: var pageMaxWidth = 0; var pageMaxHeight = 0; (function fixWidth() { var intervalCounter = 0; var interval = setInterval(function(){ var

我需要经常检查页面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);
})();
如果在评论中,如果(我是指如果)我改变:

$("#MainContainer").width(intervalMaxWidth);

并在Chrome中运行脚本,它将始终增加MainContainer宽度,这意味着它将始终计算为true
pageMaxWidth=intervalMaxWidth
。如果我没有更改intervalMaxWidth值,怎么会发生这种情况?但它实际上增加了40,因为我通过控制台调试进行了检查。
在FireFox中,这种情况不会发生,我能想到的唯一解释是:

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

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

intervalMaxWidth是否在此处更改?intervalMaxWidth=$(elem).width();尝试将以下CSS应用于
#maincainer
元素:
位置:相对;宽度:自动;高度:自动“如果有其他的方法来做这件事,那不是我真正关心的…”,如果我在使用你的网站,那可能是我关心的;)像这样的小事情(每500毫秒运行一次)可以累加起来。“onresize”事件或上面的css解决方案对浏览器会更好吗?如果您想避免内联元素被包装,您还可以添加
空白:nowrap到您的CSS@Derek:是的,但将pageMaxWidth更改为等于interMaxWidth后,注释的if不应再次运行…除非我执行$(“#MainContainer”).width(intervalMaxWidth+40);对于+40,为什么要更改intervalMaxWidth?但是如果我只更改#MainContainer的宽度,它不应该在jquery选择中被捕获,对吗?此外,如果我使用$(“#maincainer”).width(intervalMaxWidth);没关系,但是$(“#maincainer”).width(intervalMaxWidth+40);在下一次运行中计算为true条件?可能是$(“#maincainer”).width(intervalMaxWidth+40);是否导致MainContainer内的元素自动调整大小并导致与$(“#MainContainer table”)相关的if条件计算为true?因此每次我添加40个元素时,内部元素都会尝试追赶,然后再添加40个元素,它们会一次又一次地追赶…始终更改intervalMaxWidth。。。接着呢?这只是一个理论。我不擅长html/浏览器相关的东西,所以我可能错了…您可以使用console.log语句来查看到底发生了什么。
if($(elem).width()>intervalMaxWidth)