如何计算Javascript中两个字符串之间的差异?

时间:2011-05-03 03:32:49

标签: javascript

一切都很好,直到我想计算两个值之间的差异,结果我得到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的结尾。

我怎么能让它起作用? 感谢

5 个答案:

答案 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;

上面的代码片段应该可以正常工作,因为字符串没有过载减法运算符( - )重载。

示例:Click to view jsFiddle

问题出在其他地方。