我目前正在尝试寻找一种方法来选择第一个复选框(从技术上来说,它是否单选按钮,该复选框在页面(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元素,然后尝试按类排序。然后,我需要选择给定类的第一个复选框。不幸的是,我的代码无法正常工作。我需要弄清楚如何选择具有类名称的第一项,然后选择该复选框。任何帮助都很棒。
答案 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")