2015-02-10 3 views
1

Я пользовательское кодирования ползунка изображения прямо сейчас, и я добавляю атрибут для каждых ползунок изображений и уменьшенного изображения data-slideNum так:ParseInt() не работает, как ожидалось

$('.slide').each(function(i) { 
    $(this).attr('data-slideNum',i); 
}); 

$('.thumbnail').each(function(i) { 
    $(this).attr('data-slideNum',i); 
}); 

Конечно эти цифры слайдов 0 -ИКС. Под ползунком я хотел бы поставить подпись, которая показывает, какое количество слайдов вы на так я пытаюсь добавить 1 переменного количества слайдов и слайд общих, так что цифры являются правильными:

$('.slideNum').html(parseInt(x+1)+' of '+parseInt(slideTotal+1)); 

2-я parseInt() является работает правильно, но первая объединяется вместо разбора.

Так что вместо 2 of 5 Я получаю 21 of 5 и так далее.

Любые идеи?

+2

Это поведение означает, что значение 'x' является строкой. Можете ли вы расширить пример кода JS, чтобы показать, откуда вы извлекаете эти значения. –

+0

Почему downvote? В любом случае, спасибо за все ответы, разобрались! – user13286

+0

Возможный дубликат [Сумма вместо конкатенации] (http://stackoverflow.com/questions/9526126/sum-instead-of-concatenate) –

ответ

1

Вы выполняете конкатенацию строк по x и 1, а затем принимаете значение int.

По существу то, что вы делаете equivelent к:

var x = "2"; 
x = x + 1; 
parseInt(x); 

Вы можете это исправить, добавив 1 к x после parseInt вызова возвращается целое число.

$('.slideNum').html( 
    (parseInt(x, 10) + 1) 
    + ' of ' 
    + (parseInt(slideTotal, 10) + 1) 
    ); // closes .html 

Кроме того, это всегда хорошая идея, чтобы поставить десятичную к parseInt

Также вам не нужно, чтобы добавить 1 к slideTotal если slideTotal длина массива, также не необходимо преобразовать его в int. Итак:

$('.slideNum').html((parseInt(x, 10) + 1) + ' of ' + slideTotal);

должно хватить.

+0

Благодарим вас за продуманный ответ, я ценю это! – user13286

1
$('.slideNum').html(parseInt(x+1)+' of '+parseInt(slideTotal+1)); 

является вопрос

вы parsing(x + 1) дает вам строку первой причиной х является строка. то вы разбираете эту строку до целого числа ... вы должны parse(x), затем добавьте 1, и вы ее получите.

должен быть

$('.slideNum').html((parseInt(x) + 1) +' of '+parseInt(slideTotal+1)); 
1

Вы конкатенация первыми, чем пытаться разобрать:

parseInt(x+1) 

Где х является Propably веревочки и вашим являются конкатенациями его с 1, где вы получите 2 + 1 = 21, представленный как строка, и в конце вы просто разбираете 21 с целым числом.

Вы должны разобрать х первым, чем сделать арифметический, например:

parseInt(x) + 1 
1

Try parseInt(x) + 1 вместо parseInt(x + 1). Объединение строки и числа приводит к конкатенации строк.

Смежные вопросы