2017-10-18 65 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"/>

相關問題