|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
IDE是好。java中的IDE更是百花齐放,你用jbuilder能说jbuilder赶不上vs吗?用eclipse,netbeans也很舒服啊。我就不明白“稍微差一些”那一些是从哪里差来的。在网页制造中,经常碰到这类情形,经由过程主下拉菜单的选择,静态的天生子下拉菜单。比方:在主菜单中有“核心旧事”、“生存时髦”、“心境故事”三个选项,经由过程“核心旧事”的选择,子菜单主动天生如“国际”、“国际”、“体育”、“文娱”,依此类推。
使用JavaScript,我们能够轻松完成上述效果。但成绩是,假如菜单中的选项是从数据库(或其他文件)中静态提取,完成起来就并非十拿九稳的了。笔者依据本人的实践履历,向人人先容一种使用JavaScript+PHP的完成办法,文中的数据库接纳MySQL。在本例中,笔者还将先容在每次表单提交以后,怎样前往上一次菜单选项的选择形态。
文章中所先容的PHP的感化,一是用来从数据库中提取菜单选项,另外一感化,就是用来天生JavaScript代码。读者能够接纳本人熟习的注释型言语,如ASP。
为了简化代码,笔者假定主菜单已经由过程HTML机关,因为子菜单必要静态计划,以是只绘制了基础框架,HTML代码以下:
<selectname="mmenu">//主菜单计划
<optionvalue="a">核心旧事</option>
<optionvalue="b">生存时髦</option>
<optionvalue="c">心境故事</option>
//value必需与下文的menu数组相分歧
</select>
<selectname="smenu">//子菜单计划
</select>
我们必要思索的是,菜单的OnChange()事务必要完成哪些步骤。其大抵历程是,依据主菜单的选项,机关子菜单项目。而子菜单的项目笔墨最功德先设定。依据这个思绪,笔者接纳了JavaScript中的团结数组纪录子菜单选项,并由PHP在加载时主动天生。由此,笔者计划了以下的JavaScript函数setMenu():
functionsetMenu(){
menu=Array("a","b","c");//机关menu团结数组
<?php//入手下手PHP程序
$DB=newMy_DB();
$DB->Database="***";//机关新的MySQL毗连,这里利用了PHPLIB
$mmenu=array("a","b","c");//这里笔者作了简化
for($i=0;$i<count($mmenu);$i++){
$id=$mmenu[$i];
$DB->query("selectmenufromclasswheremenuid=".$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);
";
//完成menu团结数组的添补
unset($smenu);//删除smenu变量
}
}
?>//停止PHP程序
with(document){
id=all("mmenu").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=0;i<arr_menu.length;i++){
obj=createElement("option");
obj.text=arr_class[i];
all("smenu").options.add(obj);
}
}
}
如许每次显现文档时,PHP部分将注释为Javascript言语,当单击主菜单时,子菜单将主动更新。一样事理,读者能够依据此思绪,制造更庞大的多重菜单选项。
最初,笔者扼要先容一下,怎样完成在表单提交后,仍旧坚持菜单项上一次的形态。技能实在良多,而笔者接纳的是隐含变量法。在表单中增加以下代码:
<inputtype="hidden"name="h1">
<inputtype="hidden"name="h2">
我们只必要在Form表单的OnSubmit()事务中给每一个隐含变量赋值便可。即:
document.all("h1").value=document.all("mmenu").selectedIndex;
document.all("h2").value=document.all("smenu").selectedIndex;
为了使用隐含变量,在文档的Body的onLoad()事务中,我们使用PHP办法(也可用别的办法)来把持菜单的显现:
<?php
if(!isset($h1)){//只必要判别$h1
$h1=0;
$h2=0;
}
echo"document.all("mmenu").selectedIndex=".$h1.";
";
echo"document.all("mmenu").click();
";
echo"document.all("mmenu").selectedIndex=".$h1.";
";
echo"document.all("smenu").selectedIndex=".$h2;
?>
至此,我们已完成双下拉菜单的静态完成办法。
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。 |
|