一切都很好,直到我想计算两个值之间的差异,结果我得到0。
我对此非常陌生,我确信它很容易实现,并且我必须将它从字符串转换为变量或类似的东西,但我不知道该怎么做。
oldx = parseInt(document.getElementById("character").style.left);
oldy = parseInt(document.getElementById("character").style.top);
newx = evt.pageX;
newy = evt.pageY;
disx=parseInt(oldx) - parseInt(newx);
disy=parseInt(oldy) - parseInt(newy);
document.getElementById('disx').innerHTML=disx;
document.getElementById('disy').innerHTML=disy;
我在这里测试它:http://chusmix.com/game/movechar.php你可以看到一切正常,除了我得到0,0的结尾。
我怎么能让它起作用? 感谢
答案 0 :(得分:1)
您只是缺少一个parseInt()
difx=parseInt(oldx) - parseInt(newx);
dify=parseInt(oldy) - parseInt(newy);
答案 1 :(得分:1)
你这里有问题
document.getElementById("character").style.left = evt.pageX;
document.getElementById("character").style.top = evt.pageY;
oldx = parseInt(document.getElementById("character").style.left);
oldy = parseInt(document.getElementById("character").style.top);
newx = evt.pageX;
newy = evt.pageY;
disx = parseInt(oldx) - parseInt(newx);
disy = parseInt(oldy) - parseInt(newy);
这里的行
document.getElementById("character").style.left = evt.pageX;
document.getElementById("character").style.top = evt.pageY;
覆盖原始左侧和顶部样式值。请将其删除并再次检查。
所以脚本应该是
function showCoords(evt){
oldx = parseInt(document.getElementById("character").style.left);
oldy = parseInt(document.getElementById("character").style.top);
newx = evt.pageX;
newy = evt.pageY;
disx = parseInt(oldx) - parseInt(newx);
disy = parseInt(oldy) - parseInt(newy);
document.getElementById('oldx').innerHTML=oldx;
document.getElementById('oldy').innerHTML=oldy;
document.getElementById('newx').innerHTML=newx;
document.getElementById('newy').innerHTML=newy;
document.getElementById('disx').innerHTML=disx;
document.getElementById('disy').innerHTML=disy;
}
您可以找到工作样本here。
答案 2 :(得分:0)
将字符串乘以1将其变为数字。
var myString = "5";
alert(myString + 19); // 519
alert(myString*1 + 19); // 24
答案 3 :(得分:0)
首先将字符转换为整数,然后你就可以了
你可以使用这种方法
variable = parseInt(variable);
答案 4 :(得分:0)
加法运算符对字符串有重载,因此如果添加两个包含整数值的字符串,它们将被连接。
然而,减法的情况有点不同
var disx = oldx - newx;
var disy = oldy - newy;
上面的代码片段应该可以正常工作,因为字符串没有过载减法运算符( - )重载。
问题出在其他地方。