【问题标题】:Loop through an array and set the value of any html inputs that match the array values循环遍历数组并设置与数组值匹配的任何 html 输入的值
【发布时间】:2021-08-09 04:06:27
【问题描述】:

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

我想出了下面的方法,它有效,但我认为可能有更有效的解决方案。任何人有任何提示可以帮助我清理它吗?

<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>

【问题讨论】:

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

标签: html jquery arrays match


【解决方案1】:

遍历数组。

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

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

【讨论】:

  • 完美!非常感激。我正在操作的不是我的代码,而是同意元素的非标准属性。
猜你喜欢
  • 2014-09-23
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 2017-12-16
  • 2018-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多