VBA无法获取表中的锚元素?

时间:2013-11-07 22:30:56

标签: html vba dom

我正在尝试点击网页上的锚元素。我正在使用此代码:

 For each anchor in HTMLDoc.anchors
      If anchor.onclick = "validateForm(frmSearchEntry)" Then
           anchor.click
           exit for
      End if
 Next anchor

这是html的片段:

<tr>
    <td height="35" align="right" nowrap>
    <input type="hidden" name="aisposm01formReset" value="">        
    <a href="#" onclick="return resetForm(frmSearchEntry)"><img src="/Settlement/static/images/pbs/funcreset.gif" border="0"></a>&nbsp;&nbsp;
    <a href="#" onclick="validateForm(frmSearchEntry)"><img src="/Settlement/static/images/pbs/funcsearch.gif" border="0" alt=""></a></td>
    </tr>
    <tr>
       <td valign="bottom" nowrap>
         <table>
            <tr><td name="txtErrorMessage" class="error"></td></tr>
         </table>
       </td>
</tr>

然而,由于某种原因,当我尝试执行代码时,它只是飞过下一个循环,好像页面上没有任何锚元素一样。我不太清楚我在这里做错了什么。

1 个答案:

答案 0 :(得分:0)

已更新,以反映评论中所述问题的答案

您要查找的元素实际上并不是锚点。有关如何在html中实现锚点的说明,请参阅this link。锚点看起来像<a name="anchor"></a>,您可以像<a href="#anchor">click here</a>一样创建指向它的链接。

相反,我可以使用HTMLDoc.GetElementsByTagName("A")获取所有链接,然后迭代这些链接。请务必根据.getAttribute功能执行检查,如下所示。


.OnClick函数返回指向每msdn的事件处理函数的指针。您可能想要的是.getAttribute(strAttributeName As String, Optional lFlags As Long)msdn)。

尝试(未测试):

For each linkelement in HTMLDoc.GetElementsByTagName("a")   'As noted above
      If linkelement.getAttribute("OnClick") = "validateForm(frmSearchEntry)" Then
           linkelement.click
           exit for
      End if
Next anchor

如果这不能立即起作用,请在If语句中放置一个断点,并在Watch Window中检查anchor.getAttribute("OnClick")的值。