【问题标题】:How can i click button based on text instead of Class如何根据文本而不是类单击按钮
【发布时间】:2018-09-10 22:08:44
【问题描述】:

我无法编辑此代码以在基于文本而不是类的按钮中工作,或者通过类名和文本使其适用。

例如:

    <button class="same">plz-click-me</button>
    <button class="same">dont-click-me</button>

现在我想让代码点击“click-me”按钮

这是我在代码中使用的按类点击

 var inputs = document.querySelectorAll('.same:not(.hidden_elem)');

谢谢,希望找到答案对我有帮助

【问题讨论】:

  • 你想根据文本选择元素吗?
  • “工作”对您意味着什么?还有,._t3.hidden_elem 类的元素在哪里?
  • 是的,这正是我所需要的
  • 您需要一个循环来检查每个按钮的.innerHTML / .html() 是否为"click-me"
  • @ChrisG 不是.innerHTML(当然也不是循环)。 .textContent。但是,甚至不仅仅是根据另一个标准获取元素。

标签: javascript jquery class if-statement


【解决方案1】:

您必须遍历可能的匹配元素并选择textContent 与您想要的匹配的元素。你不能使用jQuery的.contains,因为click-me包含在don't-click-me中:

const matching = Array.prototype.filter.call(
  document.querySelectorAll('.same'),
  ({ textContent }) => textContent === 'click-me'
);
console.log(matching);
<button class="same">click-me</button>
<button class="same">dont-click-me</button>

请注意,如果您要选择的子字符串包含在您不想选择的元素中,您可以使用.contains

$('.same:contains("click-this-here")').click(() =&gt; console.log('clicked'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="same">click-this-here</button>
<button class="same">dont-click-me</button>

【讨论】:

  • 谢谢大家 .. 我编辑代码以查看 codepen 上的完整脚本 我无法编辑脚本,因为我是 js 的初学者,所以我希望我能找到有关代码的帮助 ...@ 987654321@
  • 谢谢大家 .. 我编辑代码以查看 codepen 上的完整脚本 我无法编辑脚本,因为我是 js 初学者,所以我希望我能找到有关代码的帮助 ... codepen .io/boda/pen/VGQXem
【解决方案2】:

    var buttons = document.querySelectorAll("button");
    var clickButton = Array.from(buttons).filter( button => button.textContent === "click-me")[0];
<button class="same">click-me</button>
<button class="same">dont-click-me</button>

【讨论】:

  • .getElementsByTagName() 返回一个活动节点列表。每次访问变量时,都会重新扫描整个文档以查找匹配的节点,因此会对性能产生影响。将它与循环一起使用只会使它们复合。请改用.querySelectorAll()
  • 我认为 getElementsByTagName 在性能方面比 querySelectorAll 更好
  • 一点也不。 .querySelector().querySelectorAll() 是较新的 DOM 查询方法。 .getElementsByTagName().getElementsByName().getElementsByClassName() 都返回活动节点列表并遇到相同的问题。
  • 现在,您只需通过向 OP 展示如何在正确的按钮上设置 click 事件处理程序来完成您的答案。
  • 谢谢大家 .. 我编辑代码以查看 codepen 上的完整脚本 我无法编辑脚本,因为我是 js 的初学者,所以我希望我能找到有关代码的帮助 ...@ 987654321@
猜你喜欢
  • 1970-01-01
  • 2021-01-20
  • 2022-01-25
  • 2014-07-18
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 2017-07-31
相关资源
最近更新 更多