【问题标题】:Click every button with the same class on facebook单击 facebook 上具有相同类的每个按钮
【发布时间】:2016-10-10 03:01:18
【问题描述】:

我正在尝试玩我不久前创建的 Facebook 群聊。显而易见的事实是我添加了太多人,我需要绝对删除每个人。 这是其中一个按钮的 html(它们都共享同一个类):

<a class="_42ft _4jy0 _4jy3 _517h _51sy" role="button" href="#" ajaxify="/chat/remove_participants/?elem_id=u_32_4&amp;uid=1124361845&amp;tid=958151054268315" rel="async-post">Remove</a>

因此,我希望在这里使用它,它会一次单击所有按钮:

 document.getElementById('_42ft _4jy0 _4jy3 _517h _51sy').click();

但是错误信息...:

VM1719:1 Uncaught TypeError: Cannot read property 'click' of null(…)

出现了..我真的很困惑为什么点击功能不起作用。

干杯

【问题讨论】:

  • Id != 类。要按班级选择,您需要document.getElementsByClassName('theClassName');
  • 不要刮脸书。使用 API。

标签: javascript facebook google-chrome console


【解决方案1】:

如果您想通过类名选择 DOM 树元素,getElementById() 不是正确的选项,因为它通过 ID 选择元素。因此,您应该选择getElementsByClassName(),它返回一个具有该类名的元素数组。然后你可以循环遍历元素以编程方式点击它。

var group_chat_buttons = document.getElementsByClassName('_42ft _4jy0 _4jy3 _517h _51sy');
for (i = 0; i < group_chat_buttons.length; ++i) {
    group_chat_buttons[i].click();
}

【讨论】:

  • 效果很好!谢谢吨
【解决方案2】:

您正在使用getElementById(),它通过 ID 获取元素。你应该使用getElementsByClassName()

var btns = document.getElementsByClassName('_42ft _4jy0 _4jy3 _517h _51sy');
for (let btn of btns) {
    btn.click();
}

它匹配所有元素for-of 循环使用选定的类名迭代每个匹配的元素。

【讨论】:

  • 哦,好吧,我输入了那个,我得到了另一个错误: Uncaught TypeError: document.getElementsByClassName(...).click is not a function(...
  • 得到了我的答案,但我仍然很好奇为什么这不起作用:/
  • 更新了我的答案。
猜你喜欢
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
相关资源
最近更新 更多