我做了一个函数来移动一个基于CSS值的元素。我的功能在一个方向上工作,但我在另一个方向上意识到一个奇怪的问题。
首先,我提取元素的左值:
$left_position = element.css('left').replace(/[^-\d\.]/g, ''); // left_position = -400
现在当我为其添加正值时,对于新位置:
$new_left_position = $left_position + 400;
我预期的结果是0,但结果却是: -400400
如果我更换" +"签署" - "签署它的工作结果是-800
知道为什么吗? 感谢
答案 0 :(得分:3)
将它解析为整数,你正在整理它,因为一个元素($ left_position)是一个字符串。
$new_left_position = parseInt($left_position) + 400;
function“.replace()”willcourse总是返回一个字符串,所以你的变量也是一个字符串。
答案 1 :(得分:0)
在javascript中,+
符号用于字符串串联连接。
var string = "400";
console.log(string + 400); //400400
console.log(parseInt(string) + 400); //800
答案 2 :(得分:0)
使用ParseInt('$variableName')
可以达到理想的效果。
我希望以下内容对您的工作也有帮助。使用简单的jQuery代码,您可以轻松地按照以下方式移动:
HTML:
<input type="button" value="To Left" onclick="moveStuff('-=100px')" />
<input type="button" value="To Right" onclick="moveStuff('+=100px')" />
<div id="stuff" style="padding:10px;background-color:#ff00f0;width:120px">I AM MOVING</div>
jQuery功能:
function moveStuff(px) {
$('#stuff').animate({
'marginLeft' : px
},1000);
}
上的工作解决方案