史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   VB如何自動填入網頁「下拉式選單」值? (http://forum.slime.com.tw/thread223407.html)

u757207 2008-01-10 11:21 AM

VB如何自動填入網頁「下拉式選單」值?
 
如填入台灣郵政裡的鄉鎮市區下拉式選單:
http://www.post.gov.tw/post/internet....jsp?ID=190102

拉下下拉式選單選擇「桃園縣」後方的下拉式選單會產生「查桃園全區」......
如果使用VB填入select的Value值也是選值桃園縣 則後方的下列式選單沒有反應
有大大知道問題是出在哪嗎?
網頁語法:
語法:

<span class="bigger">縣市/鄉鎮【市】區</span>
<select name="city" onChange="javascript:citychange();" class="select">
                      <option value="%" >請選擇</option>
                      <option value="基隆市" >基隆市</option>
                      <option value="台北市" >台北市</option>
                      <option value="台北縣" >台北縣</option>
                      <option value="桃園縣" >桃園縣</option>
                      <option value="新竹市" >新竹市</option>
                      <option value="新竹縣" >新竹縣</option>
                      <option value="苗栗縣" >苗栗縣</option>
                      <option value="台中市" >台中市</option>
                      <option value="台中縣" >台中縣</option>
                      <option value="彰化縣" >彰化縣</option>
                      <option value="南投縣" >南投縣</option>
                      <option value="雲林縣" >雲林縣</option>
                      <option value="嘉義市" >嘉義市</option>
                      <option value="嘉義縣" >嘉義縣</option>
                      <option value="台南市" >台南市</option>
                      <option value="台南縣" >台南縣</option>
                      <option value="高雄市" >高雄市</option>
                      <option value="高雄縣" >高雄縣</option>
                      <option value="屏東縣" >屏東縣</option>
                      <option value="台東縣" >台東縣</option>
                      <option value="花蓮縣" >花蓮縣</option>
                      <option value="宜蘭縣" >宜蘭縣</option>
                      <option value="澎湖縣" >澎湖縣</option>
                      <option value="金門縣" >金門縣</option>
                      <option value="連江縣" >連江縣</option>
                    </select>

VB程式碼:
語法:

Private Sub Command1_Click()
Dim vDoc, vTag
Dim i As Integer
Set vDoc = WebBrowser1.Document
For i = 0 To vDoc.All.length - 1
      If UCase(vDoc.All(i).tagName) = "SELECT" Then
          Set vTag = vDoc.All(i)
          If vTag.Name = "city" Then
              vTag.Value = "桃園縣"
          End If
      End If
  Next i
End Sub
--------------------------------------------------------------------
Private Sub Form_Load()
WebBrowser1.Navigate2 "http://www.post.gov.tw/post/internet/f_searchzone/index.jsp?ID=190102"
End Sub

:on_47::on_47::on_47:

mini 2008-01-11 04:21 PM

個人是使用 VB6
試了一天
找了google
好像"很難" "簡單辦到"
※A

不過如果你會 JavaScript 的話
可以自己寫一段
"自動點擊" 的小小副程式
再利用
WebBrowser1.Document.open
WebBrowser1.Document.Write <新的原始碼>
來重新改寫原始碼
使自動點擊達成你的目標


<※A>
這裡就算用
vDoc.All(i).Click 及 vDoc.All(i).Selected = True
也都一樣
最多都與
vTag.Value = "桃園縣"
一樣
因為這些方法只能改變 vTag.Value 的值
無法達到連續變動的事件

rainnylin 2008-01-13 12:16 AM

剛剛稍微追了一下郵局那個網頁的原始碼後發現,縣市變動的時候會去呼叫一段javascript的功能,在那段功能中則是再呼叫了另一個另一個程式,那個程式裡則存放個縣市的鄉鎮資料。
回到你的問題,你的程式裡再縣市選擇是有句 onChange="javascript:citychange();"
如果你這是你抄郵局那個網頁的那你抄的並不完全,如果要使這個功能動作你得再好好研究一下,這跟你後面那段VB的程式無關,因為你那段程式是再按了確定(submit)後才發生的。另外Form_Load()裡寫的那句是什麼意思?你能解釋一下嗎?

to mini:
用 vb script是可做到的,但是他抄下來的部份程式根本跟那個下拉選單無關。

u757207 2008-01-14 01:59 PM

引用:

作者: rainnylin (文章 1875295)
另外Form_Load()裡寫的那句是什麼意思?你能解釋一下嗎?。

WebBrowser是瀏覽器物件而http://www.post.gov.tw/post/internet....jsp?ID=190102
則為台灣郵政查詢郵碼的頁面
Form_Load()的內容是指程式執行時
將網頁內容載入WebBrowser網頁瀏覽器

另關於直接登入網頁時,改變select的value的值時會呼叫javascript:citychange(),但是為何用VB直接改變value的值時,不能呢?

javascript語法:
語法:

function citychange() {
        i = window.document.form1.city.selectedIndex;
        window.document.form1.cityarea.length = cityarea_account[i] - cityarea_account[i-1];
        index = cityarea_account[i-1] + 1;
        window.document.form1.cityarea.options[0].selected=true;
        for (j = 0; j < window.document.form1.cityarea.length; j ++) {
                window.document.form1.cityarea.options[j].value = cityarea[index + j];
                window.document.form1.cityarea.options[j].text = cityarea[index + j];
        }
}


rainnylin 2008-01-14 08:00 PM

看來是我搞錯方向了,你用vb填入資料的時候並沒有觸動onchange的動作是主要原因。
請問你用的是vb6還是.net
vb6 可以用以下方式來執行 script
WebBrowser1.Document.parentwindow.execScript "citychange", "javascript"
.net 則是
WebBrowser1.Navigate("javascript:citychange()")

mini 2008-01-14 08:59 PM

引用:

作者: rainnylin (文章 1875903)
看來是我搞錯方向了,你用vb填入資料的時候並沒有觸動onchange的動作是主要原因。
請問你用的是vb6還是.net
vb6 可以用以下方式來執行 script
WebBrowser1.Document.parentwindow.execScript "citychange", "javascript"
.net 則是
WebBrowser1.Navigate("javascript:citychange()")


vb6
vDoc.parentWindow.execScript "javascript:citychange();"

WebBrowser1.Navigate("javascript:citychange()")

接在 vTag.Value = "桃園縣"
後都可以
(最好加個 exit for)


所有時間均為台北時間。現在的時間是 10:29 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1