0

誰かがこれをデバッグするのを手伝ってくれますか??? 私は自分のコードの何が問題なのか本当にわかりません...

数値を別の数値に追加しようとしています....しかし、期待どおりに機能しません...代わりに、数値を文字列として追加するだけです。

これが私のデモです:(すでに解決済み)

ここにjsコードがあります:

$(document).ready(function(){
$("#map").click(function(e){
    var x = parseInt((e.pageX - this.offsetLeft)) - parseInt("140");
    var y = parseInt((e.pageY - this.offsetTop)) - parseInt("140");


  var coor = $("#map").css("background-position").split(" ");
  var cx = parseInt(coor[0].replace("px",""));
  var cy = parseInt(coor[1].replace("px",""));


    $("#map").stop().animate({"backgroundPosition": x+cx+" "+y+cy},"slow");
     alert("X:"+x+", CX: "+cx+"\n Y:"+y+", CY:"+cy+"\n Background-pos:"+$("#map").css("background-position"));

});
});

何が悪いのか教えてください...

4

4 に答える 4

3

()算術演算を括弧で囲みます。

$("#map").stop().animate({"backgroundPosition": (x+cx)+" "+(y+cy)},"slow");

それ以外の場合、空白文字列を追加すると、JSは数値を文字列として連結するように強制されます。

フィドルの例

于 2012-06-02T01:48:21.550 に答える
3

animate-ステートメントの最後に向かって、背景の位置を次のように設定します。

x+cx+" "+y+cy

+4つの演算は等しく解釈されるため、これは文字列として解釈されます。実際には、文字列(" ")を連結します。したがって、この式の結果全体が文字列になり、加算は加算ではなく連結になります。

ただし、数学を括弧で囲む場合は、問題ないはずです。最後から2番目の行は次のようになります。

$("#map").stop().animate({"backgroundPosition": (x+cx)+" "+(y+cy)},"slow");

(周りの余分な括弧に注意してくださいx+cx

于 2012-06-02T01:49:20.810 に答える
0

ではない ?

var x = parseInt((e.pageX - $(this).offset().left)) - parseInt("140");
var y = parseInt((e.pageY - $(this).offset().top)) - parseInt("140");
于 2012-06-02T01:47:05.573 に答える
0

以下は私にとってはうまくいきます:

$("#map").click(function(e){
        alert(e.pageX);
        alert(this.offsetLeft);
        alert(parseInt(e.pageX)-parseInt(this.offsetLeft));
于 2012-06-02T01:52:43.767 に答える