选择/选中TD类中的第一个复选框?

时间:2019-01-26 10:15:14

标签: javascript greasemonkey radio userscripts tampermonkey

我目前正在尝试寻找一种方法来选择第一个复选框(从技术上来说,它是否单选按钮,该复选框在页面(http://www.swagbucks.com/polls)上具有以下HTML:

<td class="pollCheckbox"></td>

我一直在使用以下代码来尝试选择页面上4个中的第一个复选框:

// ==UserScript==
// @name         SBPollSelectv2
// @version      1.0
// @description  Demonstration script to change form values
// @include      *
// @grant        none
// ==/UserScript==

var tds = document.getElementsByTagName("td");
for (var i = 0; i<tds.length; i++) {

  // If it currently has the pollCheckbox class
  if (tds[i].className == "pollCheckbox") {
    // Select first button
    document.getElementsByClassName("pollCheckbox")[0].checked = true;
  }
}

我相信代码的最后一行是缺陷所在。我可以按标签选择所有TD元素,然后尝试按类排序。然后,我需要选择给定类的第一个复选框。不幸的是,我的代码无法正常工作。我需要弄清楚如何选择具有类名称的第一项,然后选择该复选框。任何帮助都很棒。

2 个答案:

答案 0 :(得分:1)

它们实际上不是复选框或单选按钮-它们是<td>的样式,看起来就像单选按钮一样,因此分配给.checked无效。而是在所需的click()上调用td,网站的JS会使其看起来已选中:

document.querySelector('td.pollCheckbox').click();

包含该单行代码的用户脚本将使第一个td显示为选中状态。

因为您只想选择 first td单选按钮,所以不需要循环,您可以使用querySelector返回匹配的第一个元素选择器字符串。

答案 1 :(得分:1)

元素td只是一个表格单元。通过将类“ pollAnswerSelected”添加到元素类为“ indivAnswerWrap”的元素td中,出现选中的圆圈。您可以使用下面的代码来选中第一个框。要取消选中它,只需删除“ pollAnswerSelected”类。

document.getElementsByClassName("indivAnswerWrap ")[0].classList.add("pollAnswerSelected")