2013-05-16 3 views
0

Используя следующий код, я хочу переместить строку с id='seekline' на var1 (в большинстве случаев меньше .1), но я столкнулся с проблемой добавления var1 и j.Javascript: can not override concatenation

Знак плюс объединяется вместо добавления. Я пробовал использовать Number(), parseInt(), parseFloat() и форсировать добавление путем умножения на 1 или добавления на 0. По какой-то причине я не могу остановить конкатенацию. Когда я использую parseInt() или parseFloat() (например, parseInt(j,10)), код перестает работать.

Строка разделена на удаление px от element.style.left.

function move(var1) { 
    element = document.getElementById('seekline'); 
    console.log(var1, element.style.left); 
    var str=(element.style.left); 
    var n=str.split("p"); 
    var j = n[0]; 
    Number(j); 
    Number(var1); 
    var k = var1 + j; 
    var f = k.concat("px"); 
    console.log(j, k, f); 
    element.style.left = f; 
} 
+0

Что возвращает style.left, значение пикселя, авто, процент? и concat() объединяет массивы, вы не можете установить левую позицию в массив? – adeneo

ответ

0

Вы должны присвоить результат вызов Number(), поскольку он возвращает числовое значение переданной строки вместо изменения самой переменной.

Отметьте, что +foo такое же как делает Number(foo).

function move(var1) { 
    var style = document.getElementById('seekline').style; 

    // removes last two 'px' characters 
    var oldValue = +style.left.slice(0, -2); 

    // converts to number type, then adds 2 to it 
    var1 = +var1; 
    var1 += 2; 

    // check to see if number is NaN or +/-Infinity 
    if (isFinite(var1)) { 
    // only now string concatenates the term 'px' to it 
    element.style.left = oldValue + var1 + 'px'; 
    } 
} 
+0

+ style.left.slic (0, -2); похоже, работает. К сожалению, я не могу увеличить на 1,1. Целые числа отлично работают. Спасибо всем участникам! Следующий код работает для перемещения элемента вправо с помощью var1, когда var1 является целым числом: function move (var1) { element = document.getElementById ('seekline'); var oldValue = + element.style.left.slice (0, -2); element.style.left = parseInt (oldValue) + var1 + 'px'; } – user2391840

0
function move(var1) { 
    var element = document.getElementById('seekline'), 
     left = parseInt(element.style.left.replace('px',''),10); 

    element.style.left = ((left++) + var1) + 'px'; 
} 
0

Секрет для вас работать с числами, полученными из JavaScript, чтобы удалить строку «пикс» и преобразовать их в числа:

parseInt(element.style.left.replace('px', '')) 
+0

Почему голос? –