2012-01-08 155 views
0

這是我在選擇下拉值編程

http://www.bkstr.com/CategoryDisplay/10001-9604-10311-1?demoKey=d 

這些工作的URL被下拉值:

選擇你的計劃:所有(恆定)

選擇您的期限:2012年春季(常數))

按課程編號查找或選擇您的部門:包含值列表(我需要從我的程序中逐一選擇此值)

根據我們在上一個下拉列表中選擇的內容,將顯示下一個下拉菜單中的「按課程ID搜索或選擇課程」。

這是我試圖自動化的部分。

那麼,在點擊提交我得到的URL

http://www.bkstr.com/webapp/wcs/stores/servlet/CourseMaterialsResultsView?catalogId=10001&categoryId=9604&storeId=10311&langId=-1&programId=755&termId=100021416&divisionDisplayName=%20&departmentDisplayName=ADV&courseDisplayName=3001&sectionDisplayName=10182&demoKey=d&purpose=browsea 

在這裏我可以看到所選的值越來越作爲查詢參數傳遞,但隨後這給我留下了一個問題:

  • 每次有新值添加到下拉列表中,我必須更改我的代碼以合併該值

如何以編程方式(動態)循環粗糙的部門&它的後續課程沒有硬編碼我的查詢參數之前的值?任何指導?

回答

0

您需要將數據庫中的列表課程以與部門索引對應的JS數組的形式「回顯」到頁面中。注意數組從0開始計數,所以你的部門值也應該從0開始。這段代碼應該在你html的頭部。

var courses = [ 
    ["course1-1","course1-2","course1-3","course1-4","course1-5"], 
    ["course2-1","course2-2","course2-3","course2-4","course2-5"], 
    ["course3-1","course3-2","course3-3","course3-4","course3-5"] 
]; 

然後,用javascript,爲您的<select>添加事件偵聽器。說你有這個HTML

<select id="departments"> 
    <option value="0">dept1</option> 
    <option value="1">dept2</option> 
    <option value="2">dept3</option> 
</select> 

<select id="courses"></select> 

對於jQuery,你的監聽器會是這樣的。它應該得到以前的選擇值並在此基礎上構建另一個選擇。

$(document).ready(function(){ 


function setCourses() { 
    var departmentValue = $('#departments').val(); 
    var courseOptions = ""; 
    for (i = 0; i < courses.length; i++) { 
     courseOptions += "<option value=" + i + ">" +courses[departmentValue][i] + "</option>"; 
    } 
    $("#courses").html(courseOptions); 
} 

$('#departments').change(function() { 
    setCourses(); 
}); 

setCourses(); 

}); 

這裏有一個小提琴:http://jsfiddle.net/z5GTX/1/

1

使用Selenium RC,假設你有一個GUI訪問服務器(它不需要是相同的服務器作爲一個執行PHP)。有一個PHP版本,您可以使用它打開瀏覽器並模擬點擊和其他與頁面的交互。

http://seleniumhq.org/projects/remote-control/

如果您沒有訪問帶有GUI的服務器,你需要做服務器端JavaScript的東西,如犀牛或的NodeJS。