JQuery添加数值

时间:2012-06-02 01:40:39

标签: javascript jquery css numbers

有人可以帮我调试吗??? 我真的不知道我的代码有什么问题...

我正在尝试将数字值添加到另一个数字值....但它不能像我预期的那样工作...而只是将数字添加为字符串。

这是我的演示: (已经解决了)

这里是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 个答案:

答案 0 :(得分:3)

将括号()放在算术运算周围。

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

否则,添加空格字符串将强制JS将您的数字连接为字符串。

<强> Fiddle example

答案 1 :(得分:3)

animate - 最后声明中,您将背景位置设置为:

x+cx+" "+y+cy

这被解释为一个字符串,因为四个+ - 操作被同等地解释。你确实可以将字符串(" ")连接起来。因此,该表达式的整个结果变为一个字符串,并且添加不再是添加而是连续。

但是,如果将数学封装成括号,那么你应该没问题。你的倒数第二行变为:

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

(请注意x+cx周围的额外括号)

答案 2 :(得分:0)

不是吗?

var x = parseInt((e.pageX - $(this).offset().left)) - parseInt("140");
var y = parseInt((e.pageY - $(this).offset().top)) - parseInt("140");

答案 3 :(得分:0)

以下适用于我:

$("#map").click(function(e){
        alert(e.pageX);
        alert(this.offsetLeft);
        alert(parseInt(e.pageX)-parseInt(this.offsetLeft));