OTCloud
@OTCloud
Программирование и Архитектура ПО

Почему при вычитании parseInt работает с числами как надо, а при сложении parseInt не учитывается и переменные конкатенируются?

Собственно вопрос задан точнее некуда, приведу еще код с коментами.
function success_add_favorite_status()
{
	$( "#add_favorite_video_btn" ).attr( "data-active", true );
	$( "#add_favorite_video_btn" ).addClass( "video-subcontrol-active" );

	var count = $( "#add_favorite_video_lbl" ).text();
	parseInt(count);  // count = 10
	count_1 = 1 + count;  // count = 110
	$( "#add_favorite_video_lbl" ).text( count_1 );

}

function success_remove_favorite_status()
{
	$( "#add_favorite_video_btn" ).attr( "data-active", false );
	$( "#add_favorite_video_btn" ).removeClass( "video-subcontrol-active" );

	var count = $( "#add_favorite_video_lbl" ).text();
	parseInt( count );  // count = 10
	count_1 = count - 1;  // count = 9
	$( "#add_favorite_video_lbl" ).text( count_1 );

}


Why так?
  • Вопрос задан
  • 179 просмотров
Решения вопроса 1
alsolovyev
@alsolovyev
Вы неправильно используете функцию parseInt. Она возвращает целое число в соответствии с указанным основанием системы счисления. Следовательно Вам надо сохранить это число в какую-то переменную:
const countInt = parseInt(count);
// or
const count = parseInt($( "#add_favorite_video_lbl" ).text());

После чего уже использовать.

Что касается Вашего кода:
JS язык программирования с динамической типизацией. Поэтому он сам автоматически приводит переменные к одному типу(если такое возможно). От чего в первом примере он складывает строки, а во втором (из-за того что не может вычесть из строки) переводит строку в int самостоятельно
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Minifets
@Minifets
Hello world!!!
Попробуйте так:

count = parseInt(count);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы