0
<DIV class="uiMenu uiSelectorMenu" role=menu>
<UL class=uiMenuInner bindPoint="menu">
<LI class="uiMenuItem uiMenuItemRadio uiSelectorOption  checked" data-label="Paused"><A aria-checked=true class=itemAnchor role=menuitemradio tabIndex=0 href="#" rel=ignore><SPAN class="itemLabel fsm"><SPAN class=icon_wrap><IMG class="selector icon" src="/images/adz/ad_states/paused.gif"></SPAN>Paused</SPAN></A></LI>
<LI class="uiMenuItem uiMenuItemRadio uiSelectorOption " data-label="Active"><A aria-checked=true class=itemAnchor role=menuitemradio tabIndex=1 href="#" rel=ignore><SPAN class="itemLabel fsm"><SPAN class=icon_wrap><IMG class="selector icon" src="/images/adz/ad_states/running.gif"></SPAN>Active</SPAN></A></LI>
<LI class="uiMenuItem uiMenuItemRadio uiSelectorOption " data-label="Deleted"><A aria-checked=true class=itemAnchor role=menuitemradio tabIndex=2 href="#" rel=ignore><SPAN class="itemLabel fsm"><SPAN class=icon_wrap><IMG class="selector icon" src="/images/adz/ad_states/deleted.gif"></SPAN>Deleted</SPAN></A></LI></UL></DIV></DIV><SPAN bindPoint="copy_link_wrapper"><A class=copy_link href="#"></A></SPAN></DIV><SELECT bindPoint="select"><OPTION value=""></OPTION><OPTION selected value=2>Paused</OPTION><OPTION value=1>Active</OPTION><OPTION value=99>Deleted</OPTION></SELECT> </DIV></TD>
<TD id=td_time_start_html_last_row class=td_time_start_html ?>

以上是我要更改的下拉菜单的 HTML 代码。

在代码的末尾,它有 SELECT、OPTION 等。我通常可以对其进行更改,但是当我更改 selectedIndex 时,它不会在网站上执行任何操作,我假设代码的开头部分有一些东西要这样做。

这是我的 VB6 代码(注意你可以用任何语言给我看)

For i = 0 To Form1.WebBrowser1.Document.All.length - 1 '
    If Form1.WebBrowser1.Document.All.Item(i).nodeName = "SELECT" Then
        For x = 0 To Form1.WebBrowser1.Document.All.Item(i).Options.length - 1
            If InStr(Form1.WebBrowser1.Document.All.Item(i).Options(x).Text, "Active") > 0 Then
                Form1.WebBrowser1.Document.All.Item(i).selectedIndex = x
            End If
        Next x
    End If
Next i

当我运行该代码并使用 Debug.Print Form1.WebBrowser1.Document.All.Item(i).Options(x).Selected 检查项目值时,它确实返回 true 并且之前选择的确实说 false,但是在网站该项目不会更改/更新。

任何帮助是极大的赞赏。

4

2 回答 2

1

使用选项的 .selected 属性;这将自动更新选择的 .selectedIndex 。POC .HTA:

<html>
 <head>
  <Title>select</Title>
  <hta:application id="select" scroll = "no">
  <script type="text/vbscript">
   Function doIt()
     ' select Item2
     With document.getElementById("lbDemo")
       MsgBox "Before: " & .selectedIndex
       .options(1).selected = True
       MsgBox "After: " & .selectedIndex
     End With
   End Function
  </script>
 </head>
 <body>
  <select id="lbDemo" size="4">
   <option value=Item1>Item1</option>
   <option value=Item2>Item2</option>
   <option value=Item3>Item3</option>
  </select>
  <hr />
  <input type="button" value="select 2" onclick="doIt" />
 </body>
</html>
于 2013-08-23T13:45:14.607 回答
1

不确定这有多大帮助,因为我在 VisualBasic 2012 Win-Forms 应用程序中运行了示例,

Dim selectList = WebBrowser1.Document.GetElementsByTagName("select").Item(0)
selectList.SetAttribute("selectedIndex", 2)

"Active"但是使用您的 HTML 片段作为 Web 浏览器控件的页面内容,上述代码仅使用 HTMLElement 类正确选择了下拉列表中的第二项。屏幕截图如下:

在此处输入图像描述

如果您可以在某处发布完整的源代码,则可能更容易找出您的具体问题。

于 2013-08-23T14:44:07.010 回答