Javascript GetElementsByClassName变量位置

时间:2015-12-18 17:32:56

标签: javascript vb.net getelementsbyclassname

尽量使其尽可能简洁。

使用VB.Net中的浏览器控件运行Javascript以遍历网页上的元素。

我有主要工作,这将解决我最近几周的问题,我非常感谢这里的指针。

到目前为止:

    Dim s As String = browser.ExecuteJavascriptWithResult("document.getElementsByTagName('li').length")

    If s <> "undefined" Then

        Dim iCount As Integer = CInt(s)

        For i As Integer = 0 To iCount - 1

            Dim classcounter As String = browser.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere').length")

            Dim iCount2 As Integer = CInt(classcounter)

            For i2 As Integer = 0 To iCount2 - 1
                MsgBox(BetfairCSControl.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere')[0].textContent"))
                MsgBox(BetfairCSControl.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere')[1].textContent"))
                MsgBox(BetfairCSControl.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere')[2].textContent"))
            Next


        Next
    End If

这很有效。它遍历li标签并提供我期待的数据。结果的数量可能会有所不同,我认为这样的事情会起作用:

  For i2 As Integer = 0 To iCount2 - 1
            MsgBox(BetfairCSControl.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere')[i2].textContent"))
        Next

我只是用变量替换硬编码整数。我认为那将是一件容易的事。

但它显示我未定义。即使我给它一个变量,它是0,1或2的整数,它显示未定义。 [0]有效,但testcounter = 0且[testcounter]没有。

请有人告诉我这是一个简单的语法问题或什么?如果有人能指出我正确的方向,我真的很感激。

1 个答案:

答案 0 :(得分:1)

我对VB.net了解不多,但不应该连接

"document.getElementsByClassName('classnamehere')[" + i2 + "].textContent"

否则你只会得到这个确切的字符串

"document.getElementsByClassName('classnamehere')[i2].textContent"

没有用i2替换i2

MsgBox(BetfairCSControl.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere')[i2].textContent"))