【问题标题】:An HTMLInputElement gets clicked, and an HTMLOptionElement gets一个 HTMLInputElement 被点击,一个 HTMLOptionElement 被点击
【发布时间】:2010-03-03 18:26:00
【问题描述】:

我正在尝试编写 vba 代码来为我填写网络表单并单击按钮。我正在循环浏览页面上的各种option 标签以选择我想要的标签。当我到达它时,我想选择它,但我不确定语法。

Dim htmlO As HTMLOptionElement
For Each htmlO In Object.getElementByTagName("option")
    If Trim(htmlO.value) = "INS" Then
       htmlO.????  (click? select?)
        Exit For
    End If
Next

这是来自网页的 HTML:

<select gtbfieldid="40" id="menu" name="pv_choice">
<option selected="selected" value="ZZZ">Choose Menu Option
</option><option value="BL_COMP">Blanket Companies
</option><option value="CARR_SEARCH">Carrier Search
</option><option value="PASSWORD">Change Password
</option><option value="FED_REG">FMCSA Register
</option><option value="FEEDBACK">Feedback
</option><option value="HOME">Home Page
</option><option value="INS">Insurance Filing
</option><option value="OOS_LIST">Out Of Service Carriers
</option></select>

我想选择“INS”选项。

【问题讨论】:

    标签: html vba syntax option


    【解决方案1】:
    Dim StrFindText  as string
    Dim htmlSelect As HTMLSelectElement
    Dim htmlItemOption As IHTMLOptionElement
    
    Set htmlSelect  = Object.getElementById("menu")
    StrFindText = "INS"
    
    For i = 0 To htmlSelect.options.length - 1
        htmlItemOption = htmlSelect.options(i)
        ' UCase(htmlItemOption.text) = UCase(StrFindText) ' if find text options
        If UCase(htmlItemOption.value) = UCase(StrFindText) Then
           htmlItemOption.selected = True
           Exit For
        End If
    Next i
    

    【讨论】:

      【解决方案2】:

      我没有使用 VBA,所以我提前道歉,但假设它使用与我熟悉的其他语言相同的 DOM 结构,请尝试:

      htmlO.selected= "selected"
      

      这就是我在 javascript 中实现这一点的方式:)

      HTH

      【讨论】:

      • 感谢您的回答...但它不起作用。执行 htmlO.check 时未选择菜单选项。
      • 对不起,我是个笨蛋,我以为你在使用复选框。尝试 selected="selected" 在我的原始回复中更新。
      • 我也尝试了 htmlO.select,但它没有用...谢谢 :)
      【解决方案3】:

      CSS 选择器:

      这是一个更简单的方法。使用 option[value='INS'] 的 CSS 选择器。 这表示选择带有option 标签的元素,其属性为value,其值为'INS'


      CSS 查询:


      VBA:

      CSS selector 是通过document.querySelector 方法应用的。

      objdoc.querySelector("option[value='INS']").Click  
      

      objdoc.querySelector("option[value='INS']").Selected = True 
      

      【讨论】:

        【解决方案4】:

        最终奏效的是……

        将 htmlO 调暗为 HTMLSelectElement
        设置 htmlS = objdoc.getElementById("menu")
        htmlS.selectedIndex = 7

        我必须参考整个菜单并选择要选择的菜单,而不是选择单个选项。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-09-10
          • 1970-01-01
          • 2022-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多