Tôi đang cố gắng viết một tập lệnh Greasemonkey để tập hợp một danh sách tinh chỉnh tất cả các mục có một hộp kiểm trong hộp kiểm của chúng. Danh sách các hộp kiểm có thể thay đổi từ tuần này sang tuần khác và chứa hàng trăm mặt hàng. Nhìn vào đây tôi đã học được rằng điều này có thể được thực hiện bằng cách kéo tất cả các thành phần theo tên lớp:getElementsByClassName('class_name')
Tuy nhiên, tôi không nhận được danh sách các yếu tố, chứ đừng nói đến việc lấy các giá trị từ nó.
Đây là một phiên bản đơn giản hóa của trang web.
<div class="grid_8 pt5 displayInlineTable">
<div id="ListSelector" style="width:450px;float:left; padding-right:10px;">
<div id="testDiv" style="border: solid 1px; overflow: auto; width: 450px;
height: 200px; background-color: white" align="left">
<div id="divLB" class="hstmls" style="width: 600px;">
<input name="Name1" type="checkbox" id="ID1" checked="checked" title="Title1" value="Value1" onclick="tA('thing');">
<label id="ID1_lf" for="ID1">Title1</label>
<br>
<input name="Name2" type="checkbox" id="ID2" checked="checked" title="Title2" value="Value2" onclick="tA('thing');">
<label id="ID2_lf" for="ID2">Title2</label>
<br>
<input name="Name3" type="checkbox" id="ID3" title="Title3" value="Value3" onclick="tA('thing');">
<label id="ID3_lf" for="ID3">Title3</label>
<br>
</div>
</div>
</div>
</div>
Tôi đã cố gắng chơi với cái này trên JSFiddle (chỉ thấy các giá trị được kiểm tra trong hộp cảnh báo) nhưng mã chơi của tôi dường như phá vỡ nó.
var checkedValue = null;
var inputElements = document.getElementsByClassName('grid_8 pt5 displayInlineTable');
for (var i = 0; inputElements[i]; ++i) {
if (inputElements[i].checked) {
alert(inputElements[i].value);
}
Cuối cùng, tôi dự định lấy từng mục được kiểm tra và viết tiêu đề của nó vào một hộp văn bản sang một bên, mỗi mục được phân tách bằng các dòng mới.
Có cách nào để xác định hộp kiểm nào trên trang web (trong bảng cụ thể này không, vì có nhiều bảng khác nữa) và lặp qua chúng, chỉ lấy các giá trị tiêu đề khi áp dụng?