2015-12-18 83 views
0

將嘗試儘可能簡潔地做到這一點。Javascript 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]不會。

請有人告訴我這是一個簡單的語法問題或什麼?如果任何人都可以指出我正確的方向,我會非常感激。

+0

它不是IE瀏覽器控件它是第三方。 Textcontent似乎工作正常,它給了我完全我期望的數據。我的問題是我必須給它[0] [1] [2]等等,而不是能夠讓它[循環]並獲得它所有的結果。非常感謝幫助。 –

回答

1

我不知道很多關於VB.net,但你不應該串聯

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

否則你只是這個確切的字符串

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

結束,無需更換I2它實際上是

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

我猜這是Javascript,這對我來說是一個非常新的領域。我敢肯定我的問題是給這個[i2]或任何變量。我試過[「+ i2 +」],它根本沒有顯示任何東西。甚至沒有拋出一個奇怪的異常,我猜它無法處理正在使用的javascript異常。 –

+0

我相信不會用'Option Strict On'進行編譯,並且會拋出,除非在使用'Option Strict Off'編譯時運行。最好在與其他字符串連接之前將'i2'轉換爲字符串,並使用VB字符串連接運算符&。 ''「document.getElementsByClassName('classnamehere')[」&i2.ToString&「] .textContent」' – Blackwood

+0

你們兩個剛剛解決了我的問題,並把我的問題放在了棺材裏現在一週。非常感謝你。 –