-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で機能しない原因となっており、私はそれを解決できません。

ページからすべてを削除してそれが何であるかを調べることなく、それが壊れている原因を見つけることができる方法はありますか?

編集:

OK、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

topグローバル スコープで var 名として使用しないでください。既に使用されています。

参照用にブラウザのコンソールにconsole.log(top)またはと入力してみてください。alert(window.top)

于 2013-03-23T21:42:48.277 に答える
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 に答える