jQuery打破Firefox,但没有其他浏览器

时间:2013-03-23 15:05:41

标签: javascript jquery firefox

我有以下代码,适用于所有浏览器,包括Firefox:

var top;
var imageHeight;
function upFunction() {
    top = parseInt($(".feature img").css("top"));
    imageHeight = $(".feature img").height();
    if (top > (imageHeight - 335) * -1) {
        $(".feature img").css("top", top - 1 + "px");
        $("#topPos").val(top - 1);
    }
};
$(document).ready(function() {
$("a#up").mousedown( function(e) {
        e.preventDefault();
        upFunction();
        timeoutId = setInterval( upFunction, 100 );
    }).bind('mouseup mouseleave', function() {
        clearInterval(timeoutId);
    });
});

然而,在我的页面中显然还有其他东西导致它无法在firefox中运行,我无法解决它。

有没有什么方法可以让我不知道是什么导致它破坏而不从页面中删除所有内容以找出它是什么?

编辑:

好的,在Jai的回答的帮助下,似乎对我的代码进行了一些小调整,使其在Firefox中运行。这是我做的:

function upFunction() {
    var top = parseInt($(".feature img").css("top"));
    var imageHeight = $(".feature img").height();
    if (top > (imageHeight - 335) * -1) {
        $(".feature img").css("top", top - 1 + "px");
        $("#topPos").val(top - 1);
    }
};

并从全局范围中删除2个变量。不知道为什么会有所不同,但确实如此。

3 个答案:

答案 0 :(得分:0)

尝试这些固定变量声明:

function upFunction() {
    var img = $(".feature img"),
        top = parseInt(img.css("top"));
    if (top > (335 - img.height())) {
        img.css("top", top - 1 + "px");
        $("#topPos").val(top - 1);
    }
};
$(document).ready(function() {
    var timeoutId;
    $("a#up").mousedown( function(e) {
        e.preventDefault();
        upFunction();
        timeoutId = setInterval( upFunction, 100 );
    }).bind('mouseup mouseleave', function() {
        clearInterval(timeoutId);
    });
});

关于您的实际问题:通过在开发人员工具(Firebug)中检查脚本来调试脚本。

答案 1 :(得分:0)

你应该尝试这个:

function upFunction(top, imageHeight) {
   if (top > (imageHeight - 335) * -1) {
       $(".feature img").css("top", top - 1 + "px");
       $("#topPos").val(top - 1);
   }
}
$(document).ready(function() {
    var top = parseInt($(".feature img").css("top"));
    var imageHeight = $(".feature img").height();
    $("a#up").mousedown( function(e) {
        e.preventDefault();
        upFunction(top, imageHeight);
        timeoutId = setInterval(function(){
                        upFunction(top, imageHeight);
                    }, 100);
    }).bind('mouseup mouseleave', function() {
        clearInterval(timeoutId);
    });
});

答案 2 :(得分:0)

不要在全局范围内使用top作为var名称,它已经被使用。

尝试在浏览器控制台中输入console.log(top)alert(window.top)作为参考。