У меня возникла проблема с javascript, которую я использую как часть страницы результатов поиска, надеюсь, кто-то может помочь. У меня есть функция, которая проверяет, что переменная 'currentAmount' меньше, чем переменная 'total'. Если currentAmount меньше общего, тогда сделайте что-нибудь, иначе ничего не сделайте.Проблема с Javascript <оператор возвращает false, когда условие определенно верно
var currentAmount = document.getElementById('currentAmountHidField').value;
var total = '@Html.Raw(Json.Encode(Model.ResultCount))';
var tempScrollTop = $(window).scrollTop();
function loadMore() {
alert("current amount" + currentAmount);
alert("total" + total);
var listView = $("#propertyList").data("kendoListView");
if (currentAmount < total) {
alert("function is being run");
currentAmount = +currentAmount + 12;
document.getElementById('currentAmountHidField').value = currentAmount;
if (currentAmount >= total) {
$('#loadMoreButton').hide();
}
}
else {
alert("function is not being run");
}
listView.dataSource.pageSize(currentAmount);
listView.refresh();
tempScrollTop = $(window).scrollTop();
}
В вышеприведенном currentAmount всегда первоначально будет 12. По большей части, это работает совершенно нормально, но для одного экземпляра поиска, где общая = 108, то Javascript обрабатывающего положение еще из функция. то есть предупреждение, в котором говорится, что «функция не выполняется». Я не могу понять, почему.
Обратите внимание, что там есть предупреждения для тестирования. Появится сообщение «currentAmount12», затем «total108», после чего «функция не запускается». Это не имеет никакого смысла? Я даже попытался сделать что-то еще с двумя цифрами (например, вычесть 12 из 108), чтобы проверить, обрабатываются ли они как числа, которые они есть. И, как я уже сказал, это работает для любой другой комбинации чисел, которые я смог проверить.
Это похоже на javascript, по одному критерию поиска, читает 12 как более 108. Интересно, что когда я хардкор значения 12 в первой строке функции loadMore, он будет работать как соответственно, но, очевидно, это нехорошо ,
Любая помощь вообще была бы весьма признательна. Почему javascript считает, что 12 больше 108?
Благодаря
* «Проблема с Javascript <оператор возвращения ложным, когда условие, безусловно, верно» * Шаг 1: Отпусти убеждении, что условие правда. Это не так. Если бы это было так, оператор возвращал бы «true», а не «false». ['select' не нарушен] (https://pragprog.com/the-pragmatic-programmer/extracts/tips). –
Запишите свои переменные и их тип непосредственно перед тестом: 'console.log (typeof total, total);'.Вы поймете, почему результат не тот, который, по вашему мнению, должен быть (обратите внимание, что строка не является числом). –
Убедитесь, что вы сравниваете числа, а не строки. Вы можете сделать это разными способами, например: 'var total = Number ('@ Html.raw ...');' –