如何在while循环中动态遍历不同名称的属性获取数据?
嘿,这个需求完全可以实现!咱们先把你代码里的小问题理顺,再给出能正常运行的版本~
首先,你的while循环语法有点问题:JavaScript里while的条件是括号里的布尔表达式,你写的while (i = 0, i <= 10)用了逗号运算符,会把最后一个值作为判断条件,而且i的初始化位置不对,很容易导致无限循环或者采集错误。
然后重点解决你关心的动态拼接输入框名称的问题——这其实非常简单,直接用字符串拼接就行:"Name" + i,每次循环i递增,就能自动生成Name1、Name2...Name10这些目标名称。
下面是修正后的完整代码,我加了注释帮你理解每一步:
onEvent("next", "click", function(getData) { // 初始化存储结果的数组,每次点击都重新创建,避免旧数据干扰 let inputContents = []; // 循环变量从1开始,因为你的输入框是Name1到Name10 let i = 1; // while循环:当i小于等于10时继续执行 while (i <= 10) { // 动态拼接当前要采集的输入框名称 let targetInput = "Name" + i; // 获取该输入框的text属性值 let inputText = getProperty(targetInput, "text"); // 把值存入数组(push方法自动加到数组末尾,不用手动管索引) inputContents.push(inputText); // 输出当前采集的内容,方便调试 console.log(`第${i}个输入框内容:${inputText}`); // 循环变量自增,不然会无限循环! i++; } // 所有输入框采集完成后,可以在这里处理整个数组 console.log("全部采集内容:", inputContents); });
几个关键细节要注意:
- 如果希望每次点击"next"按钮都重新采集一遍所有输入框,就把数组和i的初始化放在事件函数内部,这样每次点击都会重置状态。
- 要确保你的输入框ID/名称确实是
Name1到Name10,拼写完全一致,不然getProperty会找不到目标元素。 - 数组存储用
push()是最省心的方式,如果一定要让数组索引和输入框的数字对应(比如索引1存Name1的内容),可以改成inputContents[i] = inputText,不过数组默认从0开始索引,这种情况记得提前给数组预留空间或者处理好索引逻辑。
内容的提问来源于stack exchange,提问作者Yotam Fogel
相关产品推荐
相关产品推荐

