gpt4 book ai didi

javascript - 当条件肯定为真时,Javascript < 运算符返回 false 的问题

转载 作者:行者123 更新时间:2023-11-28 18:08:42 24 4
gpt4 key购买 nike

我在使用 javascript 时遇到问题,我将其用作搜索结果页面的一部分,希望有人可以提供帮助。我有一个函数可以检查变量“currentAmount”是否小于变量“total”。如果 currentAmount 小于 Total,则执行某些操作,否则不执行任何操作。

    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 正在处理函数的 else 子句。即显示“功能未运行”的警报。我不明白为什么。

请注意,那里有用于测试的警报。它将弹出“currentAmount12”,然后“total108”,然后“函数未运行”。这没有任何意义吗?我什至尝试立即对这 2 个数字执行其他操作(例如,从 108 中减去 12),只是为了检查这些数字是否被处理为数字,确实如此。就像我说的,这对于我能够测试的所有其他数字组合都有效。

这就像 javascript,仅针对一个搜索条件,将 12 读取为大于 108。有趣的是,当我在 loadMore 函数的第一行中将值硬核为 12 时,它将相应地运行,但显然这不好。

任何帮助都将不胜感激。为什么javascript会认为12大于108?

谢谢

最佳答案

currentAmounttotal 都是字符串,因此它们是按字典顺序比较的,而不是按数字比较的。 '12' 大于 '108'

使用 parseInt() 将输入值转换为数字,并省略 total 周围的引号,因此它将是一个数字。

var currentAmount = parseInt(document.getElementById('currentAmountHidField').value, 10);
var total = @Html.Raw(Json.Encode(Model.ResultCount));

当您写下以下内容时,您显然知道这是一个问题:

currentAmount = +currentAmount + 12;

因为 currentAmount 之前的 + 用于将其转换为数字(因此您得到的是加法而不是串联)。我猜您不知道它也会影响比较。

关于javascript - 当条件肯定为真时,Javascript < 运算符返回 false 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42089309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com