2017-10-18 121 views
3

我希望选择并点击网页中的全部复选框。我已经试过:如何选择并点击所有html复选框?

document.querySelectorAll('button[role="checkbox"]').forEach((e)=>{ 
    e.click(); 
}); 

另外:

document.querySelectorAll('[aria-checked="false"]').forEach((e)=>{ 
    e.click(); 
}); 

什么也没有发生,并且devtool控制台输出 “不确定”。

重现您需要有一个hotmail电子邮件帐户与已删除的邮件。

在hotmail.com中,转到“已删除的项目”,在那里“恢复已删除的项目”,然后打开一个窗口,并删除对话。每个对话附近都会有一个复选框。

+0

未定义意味着你选择了错误的(和非现有数据)。你能分享你的包含上述复选框的HTML代码片段吗? – ariefbayu

+0

'$(“:checkbox”)。click()'?添加html标记澄清 – guradio

+0

对不起,该网页包含私人信息,并在网上重现一个必须有一个Hotmail电子邮件帐户与许多消息已被删除。我只想在网页上标记所有复选框。这些都是简单而简单的html复选框,没有任何自定义。 – fayalikt

回答

1

你在正确的轨道上,但缺少一些细节。首先,查询选择器函数工作。寻找元素是他们的面包和黄油。如果你没有定义,那么你的选择器字符串是不正确的。您的HTML是否使用<input type="checkbox">实现复选框?第二,不要使用.click()。这可能会起作用,但对后续/维护程序员来说更多的工作和认知工作。此外,它可能会触发点击事件(除非当然你也会这么做)。只需设置checked属性:

document.querySelectorAll('input[type="checkbox"]').forEach((e) => e.setAttribute('checked', '')); 
+0

谢谢!在这种情况下,这些是'button'而不是'input'。稍后会尝试一下。 – fayalikt

0

如果您的复选框是inputs可以使用...

$('input:checkbox').prop('checked',true); 

......或者......

$('input[type="checkbox"]').prop('checked',true); 
0

也许不是模拟点击,请尝试手动设置aria-checked属性:

document.querySelectorAll('[role="checkbox"]').forEach((e)=>{ 
    //e.click(); 
    e.setAttribute("aria-checked", "true") 
}); 

在这里看到:jsFiddle

0

试试下面的代码

$("input[type='checkbox']").change(function(){ 
 
    console.log($(this).attr("id")+" changed"); 
 
}); 
 

 
$(document).ready(function(){ 
 
    $("input[type='checkbox']").prop("checked",true); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" id="chkbox1" checked="checked"/> 
 
<input type="checkbox" id="chkbox2"/> 
 
<input type="checkbox" id="chkbox3"/>

相关问题