如何以编程方式更改此下拉菜单中的所选项目?

时间:2013-08-23 13:17:00

标签: javascript jquery vbscript vb6

<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,但在网站上该项不会更改/更新。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

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

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

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

enter image description here

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