首頁 php教程 PHP开发 JavaScript+PHP應用一:網頁製作中雙下拉選單的動態實現

JavaScript+PHP應用一:網頁製作中雙下拉選單的動態實現

Nov 25, 2016 am 09:37 AM

在網頁製作中,常常遇到這種情況,透過主下拉選單的選擇,動態的生成子下拉選單。例如:在主選單中有「焦點新聞」、「生活時尚」、「心情故事」三個選項,透過「焦點新聞」的選擇,子選單自動產生如「國內」、「國際」、「體育」、 “文娛”,依此類推。 

利用javascript,我們可以輕鬆達到上述效果。但問題是,如果選單中的選項是從資料庫(或其他文件)動態提取,實現起來就並不是輕而易舉的了。作者根據自己的實際經驗,向大家介紹一種利用javascript + php的實作方法,文中的資料庫採用mysql。在本例中,筆者也會介紹在每一次表單提交之後,如何返回上一次選單選項的選擇狀態。 

文章中所介紹的php的作用,一是用來從資料庫中提取選單選項,另一個作用,就是用來產生javascript程式碼。讀者可以採用自己熟悉的解釋型語言,如asp。

為了簡化程式碼,筆者假設主選單已經通過html構造,由於子選單需要動態設計,所以只繪製了基本框架,html程式碼如下: 

 

考慮的是,選單的onchange()事件需要完成哪些步驟。其大致過程是,根據主選單的選項,建構子選單項目。而子選單的項目文字最好事先設定。根據這個思路,筆者採用了javascript中的聯合數組記錄子選單選項,並由php在載入時自動產生。由此,筆者設計如下的javascript函數setmenu(): 

function setmenu(){ 

menu=array("a","b","c"); //建構menu聯合數組 

php //開始php程式 

$db = new my_db(); 

$db->database = "***"; //建構新的mysql連接,這裡使用了phplib 

$mmenu = array(" a","b","c"); //這裡筆者作了簡化 

for ($i=0;$i
$id = $mmenu[$ i]; 

$db->query("select menu from class where menuid ='".$id."'"); 

//假設選單選項存放在class表的menu字段,menuid用來識別menu

while ($db->next_record()){ 

$smenu[] = """.$db->f("menu")."""; 



if (isset($smenu} ) && is_array($smenu)){ 

$str = implode(",",$smenu); 

echo "menu["$id"] =array($str);ntt"; 
完成
/完成menu聯合陣列的填入 

unset($smenu); //刪除smenu變數 





?> //結束php程式 



?> //結束php程式 
.value; //取得主選單的value值 

arr_menu=menu[id]; 

for(i=all("smenu").options.length;i>=0;i--){ 

all ("smenu").options.remove(i); //需要清除原有的項目 



if (arr_menu.length==0){ 

return for

} ;i
obj=createelement("option"); 

obj.text=arr_class[i]; 

all("smenu").options.add(obj); } 





這樣每次顯示文件時,php部分將解釋為javascript語言,當點擊主選單時,子選單將自動更新。同樣道理,讀者可以根據此思路,創造更複雜的多重選單選項。 

最後,筆者簡單介紹一下,如何實現在表單提交後,仍然保持選單項目上一次的狀態。技巧其實很多,筆者採用的是隱含變數法。在表單中加入以下程式碼: 

 

 

我們只需要在form表單的onsubmit()事件中給每個隱含變數賦值即可。即: 

document.all("h1").value=document.all("mmenu").selectedindex; 

document.all("h2").value=document.all("smenu").selectedindex; 

為了利用隱含變量,在文檔的body的onload()事件中,我們利用php方法(也可用其它方法)來控制選單的顯示: 


if (!isset($h1)){ //只需要判斷$h1 

$h1 = 0; 

$h2 = 0; echo "document.all("mmenu").selectedindex=".$h1.";ntt"; 

echo "document.all("mmenu").click();ntt"; 

echo "document.all ("mmenu").selectedindex=".$h1.";ntt"; 

echo "document.all("smenu").selectedindex=".$h2; 

?> 

至此,我們已經實現雙至此,我們已經實現雙至此下拉式選單的動態實作方法。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1274
29
C# 教程
1256
24