2014-12-01 3 views
0

Я создал функцию перемещения элемента базы слева от значения CSS. Моя функция работает в одном направлении, но я понимаю странную проблему в другом направлении.Добавление положительного числа и отрицательного числа

Сначала я извлечь левое значение элемента:

$left_position = element.css('left').replace(/[^-\d\.]/g, ''); // left_position = -400 

теперь, когда я добавляю положительное значение, что для новой позиции:

$new_left_position = $left_position + 400; 

В результате я ожидал был 0 но вместо того, чтобы результат: -400400

Если я заменить знак «+» на знак «-» подписать его работу результата является -800

Любая идея, почему? Thanks

+0

закиньте элемент Integer перед выполнением операций =) –

+0

... с использованием 'parseInt()' – RichardBernards

ответ

3

Разделите его на целое, вы его объединяете, потому что один элемент ($ left_position) является строкой.

$new_left_position = parseInt($left_position) + 400; 

Функция «.replace()» будет всегда возвращать строку, поэтому ваша переменная также является строкой.

0

В javascript знак + предназначен для строки concantantion on strings.

var string = "400"; 
console.log(string + 400); //400400 
console.log(parseInt(string) + 400); //800 
+0

+ не только для конкатенации, его переводчик и интерпретатор JavaScript решают, что мы для конкатенации или выполнения математических операций в зависимости от типов данных. Однако, если только одна из двух переменных является строкой, математическая операция невозможна, и она будет использовать concat – Steini

+0

Вот почему я написал: 'on strings'. – vaso123

+0

Да, я просто разместил его, потому что он выглядит несколько неполным, я не говорю о его неправильности. :) – Steini

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); 
} 

Рабочий раствор на JS Bin