史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2008-01-10, 11:21 AM   #1
u757207
註冊會員
 
u757207 的頭像
榮譽勳章
UID - 224840
在線等級: 級別:20 | 在線時長:489小時 | 升級還需:36小時級別:20 | 在線時長:489小時 | 升級還需:36小時級別:20 | 在線時長:489小時 | 升級還需:36小時級別:20 | 在線時長:489小時 | 升級還需:36小時級別:20 | 在線時長:489小時 | 升級還需:36小時
註冊日期: 2006-02-10
VIP期限: 2009-04
文章: 160
精華: 0
現金: 598 金幣
資產: 598 金幣
預設 疑問 - 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
u757207 目前離線  
送花文章: 73, 收花文章: 36 篇, 收花: 54 次
回覆時引用此帖
舊 2008-01-11, 04:21 PM   #2 (permalink)
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時
註冊日期: 2002-12-07
文章: 13247
精華: 0
現金: 26237 金幣
資產: 3024047 金幣
預設

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

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


<※A>
這裡就算用
vDoc.All(i).Click 及 vDoc.All(i).Selected = True
也都一樣
最多都與
vTag.Value = "桃園縣"
一樣
因為這些方法只能改變 vTag.Value 的值
無法達到連續變動的事件
mini 目前離線  
送花文章: 1999, 收花文章: 7956 篇, 收花: 26748 次
回覆時引用此帖
向 mini 送花的會員:
u757207 (2008-01-14)
感謝您發表一篇好文章
舊 2008-01-13, 12:16 AM   #3 (permalink)
註冊會員
榮譽勳章
UID - 64912
在線等級: 級別:60 | 在線時長:3915小時 | 升級還需:50小時級別:60 | 在線時長:3915小時 | 升級還需:50小時級別:60 | 在線時長:3915小時 | 升級還需:50小時級別:60 | 在線時長:3915小時 | 升級還需:50小時級別:60 | 在線時長:3915小時 | 升級還需:50小時
註冊日期: 2003-05-05
文章: 617
精華: 0
現金: 199 金幣
資產: 1853 金幣
預設

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

to mini:
vb script是可做到的,但是他抄下來的部份程式根本跟那個下拉選單無關。
rainnylin 目前離線  
送花文章: 65, 收花文章: 170 篇, 收花: 619 次
回覆時引用此帖
有 2 位會員向 rainnylin 送花:
mini (2008-02-25),u757207 (2008-01-14)
感謝您發表一篇好文章
舊 2008-01-14, 01:59 PM   #4 (permalink)
註冊會員
 
u757207 的頭像
榮譽勳章
UID - 224840
在線等級: 級別:20 | 在線時長:489小時 | 升級還需:36小時級別:20 | 在線時長:489小時 | 升級還需:36小時級別:20 | 在線時長:489小時 | 升級還需:36小時級別:20 | 在線時長:489小時 | 升級還需:36小時級別:20 | 在線時長:489小時 | 升級還需:36小時
註冊日期: 2006-02-10
VIP期限: 2009-04
文章: 160
精華: 0
現金: 598 金幣
資產: 598 金幣
預設

引用:
作者: rainnylin 查看文章
另外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];
	}
}
u757207 目前離線  
送花文章: 73, 收花文章: 36 篇, 收花: 54 次
回覆時引用此帖
舊 2008-01-14, 08:00 PM   #5 (permalink)
註冊會員
榮譽勳章
UID - 64912
在線等級: 級別:60 | 在線時長:3915小時 | 升級還需:50小時級別:60 | 在線時長:3915小時 | 升級還需:50小時級別:60 | 在線時長:3915小時 | 升級還需:50小時級別:60 | 在線時長:3915小時 | 升級還需:50小時級別:60 | 在線時長:3915小時 | 升級還需:50小時
註冊日期: 2003-05-05
文章: 617
精華: 0
現金: 199 金幣
資產: 1853 金幣
預設

看來是我搞錯方向了,你用vb填入資料的時候並沒有觸動onchange的動作是主要原因。
請問你用的是vb6還是.net
vb6 可以用以下方式來執行 script
WebBrowser1.Document.parentwindow.execScript "citychange", "javascript"
.net 則是
WebBrowser1.Navigate("javascript:citychange()")
rainnylin 目前離線  
送花文章: 65, 收花文章: 170 篇, 收花: 619 次
回覆時引用此帖
有 4 位會員向 rainnylin 送花:
mini (2008-01-14),rank (2008-02-24),superxboy (2008-01-30),u757207 (2008-01-14)
感謝您發表一篇好文章
舊 2008-01-14, 08:59 PM   #6 (permalink)
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時
註冊日期: 2002-12-07
文章: 13247
精華: 0
現金: 26237 金幣
資產: 3024047 金幣
預設



引用:
作者: rainnylin 查看文章
看來是我搞錯方向了,你用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)

此帖於 2008-01-14 09:12 PM 被 mini 編輯.
mini 目前離線  
送花文章: 1999, 收花文章: 7956 篇, 收花: 26748 次
回覆時引用此帖
有 3 位會員向 mini 送花:
rank (2008-02-24),superxboy (2008-01-30),u757207 (2008-01-14)
感謝您發表一篇好文章
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
程式 - 如何利用VB的winsock自動登入網頁 superxboy 程式語言討論區 2 2007-11-22 03:13 PM
討論 - 請教如何解決網頁中下拉式選單被XP SP2阻擋的問題? selenaloo 軟體應用問題討論區 26 2007-03-06 10:39 PM
討論 - 兩個下拉式選單如何建關連性???? johnss 論壇程式討論區 2 2007-02-03 11:54 PM


所有時間均為台北時間。現在的時間是 06:30 AM


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


SEO by vBSEO 3.6.1