Я пытаюсь написать скрипт Greasemonkey, который собирает уточненный список всех элементов, у которых есть флажок. Список флажков может варьироваться от недели к неделе и содержит сотни пунктов. Глядя здесь, я узнал, что это можно сделать, потянув все элементы по имени класса: getElementsByClassName('class_name')
Тем не менее, я не могу получить список элементов, не говоря уже о получении значений из него.
Вот упрощенная версия сайта.
<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>
Я пытался поиграть с этим на JSFiddle (просто посмотрите проверенные значения в окне оповещения), но мой код воспроизведения, похоже, сломал его.
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);
}
В конечном счете, я планирую взять каждый проверенный элемент и написать его заголовок в текстовое поле сбоку, каждый из которых будет разделен новыми строками.
Есть ли способ определить, какие флажки установлены на сайте (в пределах этой конкретной таблицы, поскольку есть также много других таблиц) и выполнить итерацию по ним, вытягивая только значения заголовков, когда это применимо?