【发布时间】:2018-03-30 00:14:27
【问题描述】:
我有一个元素(一个复选框),带有这个 HTML:
<button type="button" class="_f_V1 noMargin o365button" aria-labelledby="_ariaId_28" role="checkbox" aria-checked="false">
<span class="_fc_3 owaimg checkboxImage wf-size-checkboxMultiselectSize ms-bg-color-white ms-border-color-neutralSecondaryAlt"> </span>
<span class="_fc_4 o365buttonLabel _fc_2" id="_ariaId_28" style="display: none;"></span>
</button>
请注意,它是一个按钮元素,尽管它的行为类似于 <input [type="checkbox"]>。
我的目标是使用click() 方法选择并单击此元素。选择正确,但click()方法失败。
我做了什么:
document.querySelector('._f_V1.noMargin.o365button').click();
但什么也没发生 - 复选框不会被选中。
鉴于这个(第一个)元素只是类似元素列表中的一个,我也尝试过:
(()=>{
document.querySelectorAll('button span').forEach((e)=>{
e.click()
});
})();
同样,第一个复选框和任何其他复选框都没有被选中。
通过在控制台中运行querySelector() 和querySelectorAll()(及其相关的选择器),我得到了我想要的元素(我没有得到undefined),所以这意味着我的选择是正确的。
既然选择正确,为什么click()方法无效?
当我用鼠标点击时 --- 复选框被选中,但是当我在同一个元素上使用 click() 时,它没有。
如果您想尝试在线复制,您需要有一个 Hotmail 电子邮件帐户,其中包含您已删除的邮件。如果是这种情况:
- 转到“已删除项目”。
- 转到“恢复已删除的项目”。
- 将打开一个窗口,其中包含已删除的对话。
- 在每个对话附近都会有一个复选框(鼠标悬停后)。这是我遇到问题的元素。
注意:鼠标悬停只会改变复选框的不透明度。
【问题讨论】:
-
能否提供代码 sn-p 以便我查看?
-
用
e.setAttribute("aria-checked", "true")代替e.click()怎么样 -
你确定你在屏幕上看到的元素真的和你附加点击事件的一样吗?
-
Dhaval, this 没有显示整个代码。似乎需要更多的 HTML,但鉴于没有任何有效的方法来复制 DOM 代码(至少,不是我所知道的),遗憾的是,即使我想要,我也可能不会提供这样的东西...
-
@dann,我已经用
setAttribute()尝试了几个操作,包括您给出的确切示例,但没有帮助。
标签: javascript jquery html css checkbox