Переключение между циклами VBA в таблице сгенерированных JavaScript - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь проверить все поля в сгенерированной JS таблице с именем tblItems

Я пытался получить getElementsByTagName ("td"), но он просто загружает все как объект HTML, и я могу 'С помощью InStr можно найти все, что их отличает.Это то, что я пытался использовать, чтобы найти значение, которое я мог бы использовать, чтобы установить флажки.

Set AllChkBoxes = appIE.document.getElementById("tblItems").getElementsByTagName("td")
    For Each box In AllChkBoxes
        If InStr(UCase(box), "") <> 0 Then
            MsgBox (box)

        Else
            MsgBox (box)
            End If
    Next box
End Sub

Это то, что флажки выглядят так, как будто я пытался перебрать значение, но не смогк.Есть множество других имен тэгов, но это просто значения в таблице или hrefs

<td align="center"><input type="checkbox" name="chkToPay" checked="" value="0"></td>

<td align="center"><input type="checkbox" name="chkToPay" checked="" value="1"></td>

<td align="center"><input type="checkbox" name="chkToPay" checked="" value="2"></td>

<td align="center"><input type="checkbox" name="chkToPay" checked="" value="3"></td>

Спасибо всем, кто может помочь.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Помогло бы увидеть больше html. Похоже, что, возможно, вы можете использовать атрибут = значение селектора, например. В следующем я нацеливаю атрибут имени и связанное значение

Dim list As Object, i As Long
Set list = ie.document.querySelectorAll("[name=chkToPay]")
For i = 0 To list.Length - 1
    Debug.Print list.item(i).Value
Next

Вы также можете комбинировать с родительским идентификатором, если существует

Dim list As Object, i As Long
Set list =  ie.document.querySelectorAll("#tableId [name=chkToPay]")
For i = 0 To list.Length - 1
    Debug.Print list.item(i).Value
Next

Вы также можете комбинировать с другим атрибутом для повышения специфичности.

Dim list As Object, i As Long
Set list =  ie.document.querySelectorAll("#tableId [type=checkbox][name=chkToPay]")
For i = 0 To list.Length - 1
    Debug.Print list.item(i).Value
Next

Вы поняли.

Если вы хотите проверить конкретное добавление в атрибуте value

ie.document.querySelector("#tableId [name=chkToPay][value='1']").Click
0 голосов
/ 16 января 2019

Может быть ниже кода справки Я использую jquery:

<table id="tableId">
<tr>
<td align="center"><input type="checkbox" name="chkToPay"  value="0"></td>

<td align="center"><input type="checkbox" name="chkToPay"  value="1"></td>

<td align="center"><input type="checkbox" name="chkToPay"  value="2"></td>

<td align="center"><input type="checkbox" name="chkToPay" value="3"></td>
</tr>


$(document).on("click", '#tableId tbody :checkbox[name="chkToPay"]', function(event) {
var currentRows = $('#tableId');

$.each(currentRows, function() {
        $(this).find(':checkbox[name=chkToPay]').each(function() {
            if($(this). prop("checked") == true){
                var parentTr = $(this).parents("tr");
                $(this).prop('checked', true);
        alert($(this).val());
        // if you need text from another td you can access by below line
                //alert(parentTr.children("td").eq(0).text());

            }
        });
    });
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...