Javascript GetElementsByClassName 变量位置
Javascript GetElementsByClassName Variable Position
将尽量做到简洁。
使用 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] 无效。
请有人告诉我这是一个简单的语法问题还是什么?如果有人能指出正确的方向,我将不胜感激。
我不太了解VB.net,但你应该不会串联
"document.getElementsByClassName('classnamehere')[" + i2 + "].textContent"
否则你最终会得到这个字符串
"document.getElementsByClassName('classnamehere')[i2].textContent"
不用原样替换 i2
MsgBox(BetfairCSControl.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere')[i2].textContent"))
将尽量做到简洁。
使用 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] 无效。
请有人告诉我这是一个简单的语法问题还是什么?如果有人能指出正确的方向,我将不胜感激。
我不太了解VB.net,但你应该不会串联
"document.getElementsByClassName('classnamehere')[" + i2 + "].textContent"
否则你最终会得到这个字符串
"document.getElementsByClassName('classnamehere')[i2].textContent"
不用原样替换 i2
MsgBox(BetfairCSControl.ExecuteJavascriptWithResult("document.getElementsByClassName('classnamehere')[i2].textContent"))