有人可以帮我调试吗??? 我真的不知道我的代码有什么问题...
我正在尝试将数字值添加到另一个数字值....但它不能像我预期的那样工作...而只是将数字添加为字符串。
这是我的演示: (已经解决了)
这里是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"));
});
});
请告诉我它有什么问题......
答案 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));