-1

我有以下代码在包括 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 个变量。不知道为什么它会有所不同,但确实如此。

4

3 回答 3

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);
    });
});
于 2013-03-23T15:32:36.013 回答
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)中检查脚本来调试您的脚本。

于 2013-03-23T15:17:24.053 回答
0

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

尝试在浏览器的控制台中输入console.log(top)或以供参考。alert(window.top)

于 2013-03-23T21:42:48.277 回答