jquery - Jquery While 循环不适用于某些值
问题描述
while
我的 jQuery 代码中的循环有一个奇怪的情况。我有一个文本框,我想拆分输入...
并创建一个数组。然后我想把数组放回文本框。
例如,我把1...3
我想要的1,2,3
放在文本框中。奇怪的部分是脚本不适用于某些值。如果我1...10
说它有效,但是如果我尝试5...10
没有任何反应。
这是我的代码,我错过了什么?谢谢。
$(function() {
$("#test").change(function() {
var val = $("#test").val();
var val2 = val.split("...");
var arr = [];
var valindex1 = val2[0];
var valindex2 = val2[1];
while (valindex1 <= valindex2) {
arr.push(valindex1);
valindex1++;
}
if (arr.length != 0) {
$("#test").val(arr);
}
})
})
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<input id="test" type="text">
解决方案
问题只是初始拆分数组中的值是字符串,并且字符串“5”不小于字符串“10” - 因此您的while
循环立即存在而无需创建数字数组。
valindex1
您可以通过确保和是数字来修复它valindex2
- 最简单的方法是在数组读取之前使用+
. 见下文:
$(function() {
$("#test").change(function() {
var val = $("#test").val();
var val2 = val.split("...");
var arr = [];
var valindex1 = +val2[0];
var valindex2 = +val2[1];
while (valindex1 <= valindex2) {
arr.push(valindex1);
valindex1++;
}
if (arr.length != 0) {
$("#test").val(arr);
}
})
})
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<input id="test" type="text">
为什么它与“1...10”一起工作我相信你想知道。这有点幸运,因为 javascript 会很高兴地评估"1" <= "10"
哪个恰好是真的。然后,当您在循环中执行此操作valindex1++;
时,它会立即将字符串“1”强制为数字1
并增加它。10...20
会像许多其他输入一样工作得很好。上面的修复适用于任何输入。
推荐阅读
- gradle - Gradle:无法获取未知属性“目标”
- oracle - Oracle-我们如何知道更新命令没有更新字段
- python - 将 TextEdit 文件附加到 Python
- javascript - 我们如何忽略 JavaScript 中的一些空格?
- xslt - XPath 通过命名空间从同级中获取价值
- sql - 来自同一表列的 SQL 连接
- sql-server - PB 选择 TODAY() 到 :var From DUMMY
- google-bigquery - Google BigQuery:固定项目/数据集
- swift - 在 Xcode 中创建新的 cocoa touch 文件不会使用项目设置缩进文件
- java - Heroku,Java Web 应用程序 - 免费 dynos Procfile - 如何创建正确的 Procfile