将列表中按钮的值设置为 "yes"
Setting value of button in a list to "yes"
EDIT 我想做的是在页面加载时将下面的按钮设置为 "yes"。代码应 运行 在 Tampermonkey 脚本中。
我尝试了以下方法,但它不起作用 ("Cannot set property 'value' of null"):
document.querySelector('.ant-click-animating-without-extra-node').value = "false";
我只找到了像 this 这样的远程相关帖子,它们讨论的是表单中的按钮,而不是列表。
所以这是 HTML(我不能这样改变):
<li class="ant-list-item activeRisk">
<div class="ant-list-item-main">
<div class="ant-list-item-meta m-l-mxl">
<div class="ant-list-item-meta-content">
<h4 class="ant-list-item-meta-title">
<span>Does this acquire personal information about the user?</span>
</h4>
</div>
</div>
</div>
<div class="ant-list-item-extra">
<button type="button" class="ant-btn failTest p-l-lg p-r-lg optimus-text-caps answerButton ant-
btn-round ant-btn-sm" ant-click-animating-without-extra-node="false">
<span>Yes</span>
</button>
<button type="button" class="ant-btn null p-l-lg p-r-lg optimus-text-caps answerButton ant-btn-
round ant-btn-sm">
<span>No</span>
</button>
</div>
</li>
第一个问题是您没有正确查询元素。您正在寻找具有 class 的元素:
document.querySelector('.ant-click-animating-without-extra-node')...
但是,ant-click-animating-without-extra-node
是一个属性,因此当您尝试获取 value
时,查询什么也找不到,然后失败。
第二个问题是这个按钮没有 value
。正如我所说,它有一个属性,所以你可以用 .setAttribute()
.
设置属性值
最后,您需要确保 HTML 之后的脚本 运行 已经被解析到内存中。这可以通过将脚本放在 body
.
中 HTML 的最后一位之后来完成
<li class="ant-list-item activeRisk">
<div class="ant-list-item-main">
<div class="ant-list-item-meta m-l-mxl">
<div class="ant-list-item-meta-content">
<h4 class="ant-list-item-meta-title">
<span>Does this acquire personal information about the user?</span>
</h4>
</div>
</div>
</div>
<div class="ant-list-item-extra">
<button type="button" class="ant-btn failTest p-l-lg p-r-lg optimus-text-caps answerButton ant-
btn-round ant-btn-sm" ant-click-animating-without-extra-node="false">
<span>Yes</span>
</button>
<button type="button" class="ant-btn null p-l-lg p-r-lg optimus-text-caps answerButton ant-btn-
round ant-btn-sm">
<span>No</span>
</button>
</div>
</li>
<script>
document.querySelector('.ant-list-item-extra > button.failTest').setAttribute("ant-click-animating-without-extra-node", "Yes");
console.log(document.querySelector('.ant-list-item-extra > button.failTest'));
</script>
EDIT 我想做的是在页面加载时将下面的按钮设置为 "yes"。代码应 运行 在 Tampermonkey 脚本中。
我尝试了以下方法,但它不起作用 ("Cannot set property 'value' of null"):
document.querySelector('.ant-click-animating-without-extra-node').value = "false";
我只找到了像 this 这样的远程相关帖子,它们讨论的是表单中的按钮,而不是列表。
所以这是 HTML(我不能这样改变):
<li class="ant-list-item activeRisk">
<div class="ant-list-item-main">
<div class="ant-list-item-meta m-l-mxl">
<div class="ant-list-item-meta-content">
<h4 class="ant-list-item-meta-title">
<span>Does this acquire personal information about the user?</span>
</h4>
</div>
</div>
</div>
<div class="ant-list-item-extra">
<button type="button" class="ant-btn failTest p-l-lg p-r-lg optimus-text-caps answerButton ant-
btn-round ant-btn-sm" ant-click-animating-without-extra-node="false">
<span>Yes</span>
</button>
<button type="button" class="ant-btn null p-l-lg p-r-lg optimus-text-caps answerButton ant-btn-
round ant-btn-sm">
<span>No</span>
</button>
</div>
</li>
第一个问题是您没有正确查询元素。您正在寻找具有 class 的元素:
document.querySelector('.ant-click-animating-without-extra-node')...
但是,ant-click-animating-without-extra-node
是一个属性,因此当您尝试获取 value
时,查询什么也找不到,然后失败。
第二个问题是这个按钮没有 value
。正如我所说,它有一个属性,所以你可以用 .setAttribute()
.
最后,您需要确保 HTML 之后的脚本 运行 已经被解析到内存中。这可以通过将脚本放在 body
.
<li class="ant-list-item activeRisk">
<div class="ant-list-item-main">
<div class="ant-list-item-meta m-l-mxl">
<div class="ant-list-item-meta-content">
<h4 class="ant-list-item-meta-title">
<span>Does this acquire personal information about the user?</span>
</h4>
</div>
</div>
</div>
<div class="ant-list-item-extra">
<button type="button" class="ant-btn failTest p-l-lg p-r-lg optimus-text-caps answerButton ant-
btn-round ant-btn-sm" ant-click-animating-without-extra-node="false">
<span>Yes</span>
</button>
<button type="button" class="ant-btn null p-l-lg p-r-lg optimus-text-caps answerButton ant-btn-
round ant-btn-sm">
<span>No</span>
</button>
</div>
</li>
<script>
document.querySelector('.ant-list-item-extra > button.failTest').setAttribute("ant-click-animating-without-extra-node", "Yes");
console.log(document.querySelector('.ant-list-item-extra > button.failTest'));
</script>