遍历数组并设置与数组值匹配的任何 html 输入的值

Loop through an array and set the value of any html inputs that match the array values

提问人:slothzen 提问时间:5/20/2021 最后编辑:slothzen 更新时间:5/20/2021 访问量:48

问:

我正在尝试找到遍历字符串数组的最有效方法,然后单击与数组中找到的任何值匹配的相应复选框输入。

我想出了以下方法,这很有效,但我认为可能有一个更有效的解决方案。有人有什么技巧可以帮助我清理这个问题吗?

<script>
    var comodArr = ['Gold','Copper'];
    jQuery(document).ready(function() {
        jQuery("#setfilters").click(function() {
            <!-- Commodities -->
            if(jQuery.inArray("Gold", comodArr) !== -1) {
                jQuery('li[val="Gold"] input').click();
            }
            if(jQuery.inArray("Silver", comodArr) !== -1) {
                jQuery('li[val="Silver"] input').click();
            }
            if(jQuery.inArray("Copper", comodArr) !== -1) {
                jQuery('li[val="Copper"] input').click();
            }
        });
    });
</script>

<a class="btn btn-primary" href="#" id="setfilters" style="display: inline-block;"><i class="fas fa-arrow-down">&nbsp;</i> Set Filters</a>

在下面回答后更新了代码。好多了!

<script>
    var fieldVals = ['Gold', 'Copper'];
    var fieldValArr = fieldVals.split(', ');
    jQuery(document).ready(function() {
        jQuery("#setfilters").click(function() {
            fieldValArr.forEach(fieldVal => jQuery("li[val='" + fieldVal + "'] input").click());
        });
    });
</script>
html jquery 数组 匹配

评论

0赞 charlietfl 5/20/2021
如果用户更改过滤器,您是否需要能够撤消此操作?
0赞 slothzen 5/20/2021
不确定是否需要。你有什么想法?数组在页面加载时动态建立。它旨在成为一个按钮,根据用户已知的数据库存储兴趣预设过滤器。
1赞 charlietfl 5/20/2021
在不知道 UI 需要如何工作的情况下很难提出建议
0赞 slothzen 5/20/2021
好吧,如果不是很明显,我正在操纵一个预先存在的 UI 来实现开发人员不想要的可用性结果。我正在检测“我的”兴趣值并检查输入以获得快速过滤的结果。仍然可以根据需要使用当前 UI 来选择/取消选择。

答:

1赞 Barmar 5/20/2021 #1

遍历数组。

comodArr.forEach(comod => jQuery(`li[val="${comod}"] input`).click());

顺便说一句,你不应该像元素那样添加非标准属性。如果您需要添加自己的属性,请使用 ,例如valdata-XXXdata-val="Gold"

评论

0赞 slothzen 5/20/2021
完善!非常感谢。不是我正在操作的代码,而是同意元素的非标准吸引力。