【问题标题】:Javascript - Click multiple elements with class or id when clicking a different buttonJavascript - 单击不同按钮时单击具有类或 id 的多个元素
【发布时间】:2019-12-02 21:19:56
【问题描述】:

我想单击一个按钮同时单击其他按钮或每个按钮之间有延迟。这些额外的按钮共享相同的类,并且它们的 id 以相同的命名法开头。我知道我可以使用 jQuery 轻松完成此任务,但我想让它与 Vanilla Javascript 一起使用。

我尝试使用 querySelector,但这只会触发第一个元素。 另外,我找到了另一种为每个按钮设置超时的解决方案,问题是当窗口加载时会触发它,当我单击另一个按钮时我需要它工作。

这是我的html代码:

<div>
  <button class="bundle-product-button" id="button1" onClick="alert('click button1');">Button 1</button>
  <button class="bundle-product-button" id="button2" onClick="alert('click button2');">Button 2</button>
  <button class="bundle-product-button" id="button3" onClick="alert('click button3');">Button 3</button>
</div>
<button class="add-bundle-to-cart">Trigger</button>

这只会触发第一个按钮:

function testOne() {
    document.querySelector(".bundle-product-button").click();
}
document.querySelector(".add-bundle-to-cart").onclick = testOne;

这会在窗口加载时触发:

var clickcallback = function(i) {
  setTimeout(function() {
    let id = "button" + i;
    document.getElementById(id).click();
  }, 1000); // one second
  if(i <= 3) {
    clickcallback(i+1);
  }
};
clickcallback(1);

我知道这可能很简单,但是如何在点击一个元素时触发多次点击。

【问题讨论】:

    标签: javascript loops onclick click settimeout


    【解决方案1】:

    querySelector 只匹配第一个元素,你必须使用querySelectorAll 然后每个

    function testOne() {
        document.querySelectorAll(".bundle-product-button").forEach(function(el) {
           el.click();
        });
    }
    document.querySelector(".add-bundle-to-cart").onclick = testOne;
    

    【讨论】:

    • 谢谢!我很接近,我正在使用“querySelectorAll”进行测试,但我错过了“el”元素。
    猜你喜欢
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    相关资源
    最近更新 更多