ASP编程:javascript+xml完成二级下拉菜单,不会...
我想详细了解ASP整站代码与PSP整站代码有什么优缺点,那个更好,更安全,更用容易维护,和管理。。。1、复杂申明该菜单最年夜的长处是能够跨过网页上任何标签,乃至是框架,
(一样平常的菜单会被select,object,flash等盖住)
以是假如你有这方面的必要,
那末这个菜单是个很好的选择。
整体而言,它有以下特征:
(1)菜单的款式和数据都是经由过程xml设置
(2)菜单的款式能够为所欲为修正,如:
<base>
<background-color>#DDDDDD</background-color>
<background-image>url(menu_bg.jpg)</background-image>
<font-size>10pt</font-size>
<color>#000099</color>
<width>100%</width>
<height>32</height>
<text-align>center</text-align>
<cursor>default</cursor>
</base>
只需节点称号切合各自标签(table,tr,td之一)的styleattribute便可。
(3)主菜单项之间能够设置支解图片,
子菜单项能够设置支解线的款式。
(4)一切图片都由css把持,制止路径成绩。
(5)能够设置假造目次的别号,为菜单链接利用相对路径带来便利,如:
<context>
<path>hdsa</path>
</context>
设置该值后,用户只需依据文件的目次布局写佳肴单,而不用忧虑假造目次的成绩。
因为菜单利用了window.createPopup(),
以是它被限定在IE5.5以上,
并且子菜单假如是新开窗口,会被拦阻。
注:用window.createPopup()制造菜单遭到过后人的启示
设置该值后,用户只需依据文件的目次布局写佳肴单,而不用忧虑假造目次的成绩。
因为菜单利用了window.createPopup(),
以是它被限定在IE5.5以上,
并且子菜单假如是新开窗口,会被拦阻。
注:用window.createPopup()制造菜单遭到过后人的启示
=====================================================================
2、完成的两个剧本能够写在一个文件中:
(1)处置Popup窗口的剧本
//------------------上面一些函数用来处置弹出窗口------------------//
varpops=newArray();//用来存储Popup窗口家属的数组
functionCreatePopup(degree)
{
if(degree<0)//层数不克不及小于0
returnnull;
if(pops!=null)//假如已存在则不需创立
returnpops;
if(degree==0)
pops=window.createPopup();//创立最顶层Popup窗口
else{
if(pops==null)
pops=CreatePopup(degree-1)//递回回溯从第一层入手下手创立
pops=pops.document.parentWindow.createPopup();//从父Popup窗口创立子Popup窗口
}
pops.document.body.setAttribute("degree",degree);
returnpops;
}
CreatePopup(1);//创立一个2层的Popup家属
varoPopup=pops;
vartimer=null;
/**
*显现一级子菜单
*@paramobjShow-显现子菜单的工具
*@paramstrGetID-存储显现内容的标签id
*/
functionshowSubMenu1(objShow,strGetID){
clearTimer();
endHideSubMenu();
varobjGet=eval(document.getElementById(strGetID));
pops.hide();
pops.document.body.innerHTML=objGet.innerHTML;
pops.show(0,0,1,1,objShow);
varintWidth=pops.document.body.scrollWidth;
varintHeight=pops.document.body.scrollHeight;
pops.hide();
pops.show(10,objShow.offsetHeight-2,intWidth,intHeight,objShow);
}
/**
*显现二级菜单
*@paramstrGetID-存储显现内容的标签id
*@paramobjTr-显现子菜单的tr工具
*/
functionshowSubMenu2(strGetID,objTr){
clearTimer();
endHideSubMenu();
varobjGet=eval(document.getElementById(strGetID));
pops.document.body.innerHTML=objGet.innerHTML;
pops.show(0,0,1,1,pops.document.body);
varintWidth=pops.document.body.scrollWidth;
varintHeight=pops.document.body.scrollHeight;
pops.hide();
pops.show(objTr.offsetWidth-2,-2,intWidth,intHeight,objTr);
}
//埋没一级子菜单
functionhideSubMenu1(){
//pops.hide();
window.setTimeout("pops.hide()",1000);
}
//埋没二级子菜单
functionhideSubMenu2()
{
//clearTimer();
//timer=window.setTimeout("pops.hide()",1000);
pops.hide();
}
//埋没一切下拉菜单
functionhideSubMenu()
{
if(pops!=null)pops.hide();
if(pops!=null)pops.hide();
}
functionclearTimer()
{
if(timer!=null)
window.clearTimeout(timer)
timer=null;
//alert("OK");
}
(2)读取剖析xml数据文件,打印菜单的剧本
//地位信息
varm_strTitle="您的地位->";
//--------主菜单款式相干界说---------//
//界说主菜单款式
varm_strMainMenuStyle="";
//主菜单项的款式attribute
varm_strMainMenuItemStyle="";
//主菜单项款式Property
varm_strMMItemProBase={};
//主菜单项鼠标悬停款式Property
varm_strMMItemProMOver={};
//菜单项与项之间的支解图片
varm_strMMItemSplitImg;
//--------子菜单款式相干界说---------//
//界说子菜单款式
varm_strSubMenuStyle="";
//子菜单项的款式attribute
varm_strSubMenuItemStyle="";
//子菜单项款式Property
varm_strSMItemProBase={};
//子菜单项鼠标悬停款式Property
varm_strSMItemProMOver={};
//子菜单项下边框款式(作为支解线)
varm_strSMItemBorderB="";
//界说假造目次路径
varm_strContextPath="";
//菜单xml数据文件工具
varm_doc;
//主菜单汇合
varm_objMMList;
varSTR_POS_FRONT="您的地位:";
//loadMenu("main_menu.xml");
/**
*加载菜单
*@paramstrXMLPath-XML数据文件地点路径及文件名
*/
functionloadMenu(strXMLFile){
m_doc=newActiveXObject("MSXML2.DOMDocument.3.0");
m_doc.async=false;
m_doc.load(strXMLFile);
getMainMenuStyle();
getSubMenuStyle();
//失掉主菜单汇合
m_objMMList=m_doc.selectSingleNode("//popmenu/menus").childNodes;
//失掉假造目次
if(m_doc.selectSingleNode("//popmenu/context/path")){
m_strContextPath=m_doc.selectSingleNode("//popmenu/context/path").text;
}
//输入主菜单
printMainMenu();
//输入一级子菜单
printSubMenu();
}
/**
*鼠标移进移出主菜单款式的改动
*@paramobj-改动款式的工具
*@parambolChg-是不是改动款式
*/
functionchgMainMenuStyle(obj,bolChg)
{
if(bolChg){//鼠标悬停改动色彩
for(varproinm_strMMItemProMOver){
obj.style=m_strMMItemProMOver;
}
}else{//鼠标移出
obj.style.border="0";
for(varproinm_strMMItemProBase){
obj.style=m_strMMItemProBase;
}
}
}//endfunctionchgMainMenuStyle(obj,i)
/**
*鼠标移进移出子菜单款式的改动
*@paramobj-改动款式的工具
*@parambolChg-是不是改动款式
*/
functionchgSubMenuStyle(obj,bolChg){
if(bolChg){//鼠标悬停改动色彩
for(varproinm_strSMItemProMOver){
obj.style=m_strSMItemProMOver;
}
}else{//鼠标移出
for(varproinm_strSMItemProBase){
obj.style=m_strSMItemProBase;
}
}
}//endfunctionchgSubMenuStyle(obj,i)
/**
*机关节点款式
*@paramstrPath节点路径
*/
functiongetNodeStyle(strPath){
varstrStyle="";
if(m_doc.selectSingleNode(strPath)){
varnodeList=m_doc.selectSingleNode(strPath).childNodes;
for(vari=0;i<nodeList.length;i++){
varnodeName=nodeList.nodeName;
varnodeText=nodeList.text;
strStyle+=nodeName.toLowerCase()+":"+nodeText+";";
}
}
returnstrStyle;
}
/**
*机关节点StyleProperty
*/
functiongetNodeProperty(strPath){
vararrProperty={};
if(m_doc.selectSingleNode(strPath)){
varnodeList=m_doc.selectSingleNode(strPath).childNodes;
for(vari=0;i<nodeList.length;i++){
varnodeName=nodeList.nodeName;
nodeName=nodeName.toLowerCase();
varnodeText=nodeList.text;
//由attribute到property的变化。如background-color->backgroundColor
varaName=nodeName.split("-");
varstrProperty=aName;
for(varj=1;j<aName.length;j++){
strProperty+=aName.substring(0,1).toUpperCase()+aName.substr(1);
}
arrProperty=nodeText;
}
}
returnarrProperty;
}
/**
*失掉主菜单款式
*/
functiongetMainMenuStyle(){
//失掉主菜单款式
m_strMainMenuStyle=getNodeStyle("//popmenu/style/main-menu/base");
//失掉主菜单项款式
m_strMainMenuItemStyle=getNodeStyle("//popmenu/style/main-menu/menu-item/base");
//主菜单项的property
m_strMMItemProBase=getNodeProperty("//popmenu/style/main-menu/menu-item/base");
//失掉鼠标悬停时主菜单项各property改动
m_strMMItemProMOver=getNodeProperty("//popmenu/style/main-menu/menu-item/mouse-over");
//失掉菜单项与项之间的支解图片
if(m_doc.selectSingleNode("//popmenu/style/main-menu/menu-item/split-image")){
varnode=m_doc.selectSingleNode("//popmenu/style/main-menu/menu-item/split-image");
m_strMMItemSplitImg="background-image:"+node.text+";";
m_strMMItemSplitImg+="background-repeat:no-repeat;background-position:centercenter;";
}
}//endfunctiongetMainMenuStyle()
/**
*失掉主菜单款式
*/
functiongetSubMenuStyle(){
//失掉子菜单款式
m_strSubMenuStyle=getNodeStyle("//popmenu/style/sub-menu/base");
//失掉子菜单项款式
m_strSubMenuItemStyle=getNodeStyle("//popmenu/style/sub-menu/menu-item/base");
//子菜单项的property
m_strSMItemProBase=getNodeProperty("//popmenu/style/sub-menu/menu-item/base");
//失掉鼠标悬停时子菜单项各property改动
m_strSMItemProMOver=getNodeProperty("//popmenu/style/sub-menu/menu-item/mouse-over");
//失掉子菜单项下边框款式(作为支解线)
if(m_doc.selectSingleNode("//popmenu/style/sub-menu/menu-item/split-line")){
varnode=m_doc.selectSingleNode("//popmenu/style/sub-menu/menu-item/split-line");
m_strSMItemBorderB="border-bottom:"+node.text+";";
}
}//endfunctiongetSubMenuStyle()
varm_bolFirst=true;//是不是初次呼应菜单
document.onclick=function(){
m_bolFirst=true;
//alert(parent.frames);
}
top.document.onclick=function(){
m_bolFirst=true;
}
/**
*睁开各个主菜单
*@paramobjTd-主菜单地点td
*@paramstrSubMenuID-对应子菜单的id
*@parambolExistSubMenu-是不是存在子菜单
*/
functionspreadMainMenu(objTd,strSubMenuID,bolExistSubMenu){
varstrEvent=event.type.toLowerCase();
if(!pops.isOpen&&strEvent=="mou搜索引擎优化ver"&&m_bolFirst){
return;
}
if(pops.isOpen&&strEvent=="click"){
return;
}
chgMainMenuStyle(objTd,true);
endHideSubMenu();
if(bolExistSubMenu){
//假如有子菜单
showSubMenu1(objTd,strSubMenuID);
}else{
//hideSubMenu();
//m_bolFirst=false;//已不是第一次呼应菜单
}
}
//打印主菜单
functionprintMainMenu()
{
vardivStyle="width:100%;";
varstrHtml="";
strHtml="<divstyle="+divStyle+">";
strHtml+="<tablestyle="+m_strMainMenuStyle+"id=mmcellpadding=3><tr>";
//假如用户设置了支解图片则输入
if(m_strMMItemSplitImg&&m_strMMItemSplitImg!=""){
strHtml+="<tdstyle="+m_strMMItemSplitImg+"width=2></td>";
}
varintMenuWidth=0;
for(vari=0;i<m_objMMList.length;i++)
{
varmenuNode=m_objMMList;
varattList=menuNode.attributes;
varmenuText=attList.getNamedItem("text").text;
varmenuHref=attList.getNamedItem("href").text;
varmenuTarget="";
if(attList.getNamedItem("target"))
menuTarget=attList.getNamedItem("target").text;
else
menuTarget="_self";
varintMenuWidth;
if(attList.getNamedItem("width"))
intMenuWidth=attList.getNamedItem("width").text;
varstrSubMenuID="sm"+i;
varstrMouseOverEvent="";
varstrClickEvent="";
//假如有子拉菜单,则显现
if(menuNode.hasChildNodes()){
strMouseOverEvent="chgMainMenuStyle(this,true);spreadMainMenu(this,""+strSubMenuID+"",true);";
strClickEvent=strMouseOverEvent;
}else{
strMouseOverEvent="chgMainMenuStyle(this,true);";
strClickEvent="onClickEvent("+menuHref+","+menuTarget+","+menuText+");";
}
strHtml+="<tdwidth="+intMenuWidth+"style="+m_strMainMenuItemStyle+"id=mm"+i+
""+
">"+menuText+"</td>";
//假如用户设置了支解图片则输入
if(m_strMMItemSplitImg&&m_strMMItemSplitImg!=""){
strHtml+="<tdstyle="+m_strMMItemSplitImg+"width=2></td>";
}
}
strHtml+="<td></td>";
strHtml+="</tr>";
strHtml+="</table>";
strHtml+="</div>";
document.write(strHtml);
}//endprintMainMenu()
//打印一级子菜单
functionprintSubMenu(){
for(vari=0;i<m_objMMList.length;i++){
menuNode=m_objMMList;
//假如没有子菜单,实行下一个轮回
if(!menuNode.hasChildNodes()){
continue;
}
//失掉主菜单下的子菜单汇合
varobjSMList=menuNode.childNodes;
varintSubMenuLen=objSMList.length;
//每一个主菜单对应的子菜单id
varstrSubMenuID="sm"+i;
//arrMenuID.push(strSubMenuID);
varstrSubMenuHtml="<divstyle=display:none;border:0;id="+strSubMenuID+">"+
"<tablecellspacing=0cellpadding=4style="+m_strSubMenuStyle+">";
for(varj=0;j<intSubMenuLen;j++){
varobjSubMenu=objSMList;
varattList=objSubMenu.attributes;
varmenuText=attList.getNamedItem("text").text;
varmenuHref=attList.getNamedItem("href").text;
varmenuTarget="";
if(attList.getNamedItem("target"))
menuTarget=attList.getNamedItem("target").text;
else
menuTarget="_self";
//假如有三级子菜单,则必要箭头标识
varstrRightRow=" ";
//二级子菜单id
varstrSubMenu2ID=strSubMenuID+"_sm"+j;
//鼠标悬停和移出时一级子菜单的呼应
varstrMouseOverEvent="parent.chgSubMenuStyle(this,true);parent.endHideSubMenu();";
varstrMouseOutEvent="parent.chgSubMenuStyle(this,false);parent.beginHideSubMenu();";
//地位信息显现
varstrPosition=STR_POS_FRONT+m_objMMList.attributes.getNamedItem("text").text+"->"
+menuText;
//alert(strPosition);
if(objSubMenu.hasChildNodes()){
//打印其二级子菜单
printSubMenu2(objSubMenu,strSubMenu2ID,strPosition);
strMouseOverEvent+="parent.showSubMenu2(""+strSubMenu2ID+"",this);";
//strMouseOutEvent+="parent.beginHideSubMenu();";
strRightRow="<fontstyle=font-family:Webdings;font-size:7pt;height:10>4</font>";
strPosition="";
}else{
//strMouseOverEvent+="parent.endHideSubMenu();";
strMouseOverEvent+="parent.hideSubMenu2();";
}
varstrOnClickEvent="javascript:parent.onClickEvent("+menuHref+","+menuTarget+","+strPosition+");"
strSubMenuHtml+="<trstyle="+m_strSubMenuItemStyle+""+
""+
""+
"onclick="+strOnClickEvent+""+
"><tdwidth=3nowrapstyle="+m_strSMItemBorderB+"></td>"+
"<tdnowrapstyle="+m_strSMItemBorderB+">"+menuText+"</td>"+
"<tdwidth=10align=rightnowrapstyle="+m_strSMItemBorderB+">"+strRightRow+"</td>"+
"</tr>";
//alert(objSubMenu.text.length);
}//endfor子菜单个数轮回
strSubMenuHtml+="</table></div>";
document.write(strSubMenuHtml);
}//endfor主菜单个数轮回
}//endfunctionprintSubMenu()
/**打印二级子菜单
*objSubMenu:一级子菜单工具
*strSubMenu2ID:将要打印的二级菜单的id
*strPosition:主菜单和一级子菜单文本形貌
*/
functionprintSubMenu2(objSubMenu,strSubMenu2ID,strPosition)
{
//arrMenuID.push(strSubMenu2ID);
varobjSMList=objSubMenu.childNodes;
varintSubMenu2Len=objSMList.length;
varstrSubMenu2Html="<divstyle=display:none;border:0;id="+strSubMenu2ID+">"+
"<tablecellspacing=0cellpadding=4style="+m_strSubMenuStyle+">";
for(vari=0;i<intSubMenu2Len;i++)
{
varobjSubMenu2=objSMList;
varattList=objSubMenu2.attributes;
varmenuText=attList.getNamedItem("text").text;
varmenuHref=attList.getNamedItem("href").text;
varmenuTarget="";
if(attList.getNamedItem("target"))
menuTarget=attList.getNamedItem("target").text;
else
menuTarget="_self";
varstrPostion2=strPosition+"->"+menuText;
strSubMenu2Html+="<trstyle="+m_strSubMenuItemStyle+""+
""+
""+
"onclick=javascript:parent.parent.onClickEvent("+menuHref+","+menuTarget+","+strPostion2+");"+
"><tdwidth=3nowrapstyle="+m_strSMItemBorderB+"></td>"+
"<tdnowrapstyle="+m_strSMItemBorderB+">"+menuText+"</td>"+
"<tdwidth=3nowrapstyle="+m_strSMItemBorderB+"></td>"+
"</tr>";
}
strSubMenu2Html+="</table></div>";
document.write(strSubMenu2Html);
}//endfunctionprintSubMenu2
/**
*翻开链接,一切菜单的链接都是经由过程这个函数来翻开。并显现地位信息
*@paramstrUrl-翻开链接的地点
*@paramstrTarget-翻开链接的target。如_self,_blank等
*@paramstrViewText-地位信息
*/
functiononClickEvent(strUrl,strTarget,strViewText)
{
m_bolFirst=true;//今后呼应菜单时变成为第一次呼应
//document.all.selected_menu.innerText=strViewText;
m_strTitle="";
vararrText=strViewText.split("->");
if(arrText.length>0)
m_strTitle=arrText;
for(vari=1;i<arrText.length;i++)
{
m_strTitle+="-"+arrText;
}
m_strTitle=m_strTitle.substring(STR_POS_FRONT.length);
//埋没下拉菜单
hideSubMenu();
//显现title
if(m_strTitle!="")
{
//parent.document.title=m_strTitle;
}
if(strUrl=="#")
return;
//假如url是一个javascript字符串则间接实行之
if(strUrl.toLowerCase().indexOf("javascript")!=-1){
executeScript(strUrl);
return;
}
strUrl=m_strContextPath+strUrl;//地点应加上假造目次
window.open(strUrl,strTarget);
}
//实行一个javascript字符串
functionexecuteScript(strScript)
{
//第一个eval失掉该字符串暗示的变量,第二个eval则实行变量里的剧本
eval(strScript);
}
3、典范的xml设置
<?xmlversion="1.0"encoding="GB2312"?>
<popmenu>
<!--款式界说-->
<style>
<!--主菜单款式界说-->
<main-menu>
<!--基础款式,只需节点切合tablestyleattribute便可-->
<base>
<background-color>#DDDDDD</background-color>
<background-image>url(menu_bg.jpg)</background-image>
<font-size>10pt</font-size>
<color>#000099</color>
<width>100%</width>
<height>32</height>
<text-align>center</text-align>
<cursor>default</cursor>
</base>
<!--菜单项的款式-->
<menu-item>
<!--基础款式,节点切合tdstyleattribute便可,可选。鼠标移出时利用该款式-->
<base>
<background-color></background-color>
<color>#000099</color>
</base>
<!--鼠标悬停时的款式,节点切合tdstyleattribute便可,可选-->
<mouse-over>
<background-color>white</background-color>
<border>1solid#6699CC</border>
<color>green</color>
</mouse-over>
<!--菜单项与项之间的支解图片,可选-->
<split-image>url(menu_split.gif)</split-image>
</menu-item>
</main-menu>
<!--子菜单款式界说-->
<sub-menu>
<!--基础款式,只需节点切合tablestyleattribute便可-->
<base>
<font-size>9pt</font-size>
<border>1solidblack</border>
<cursor>default</cursor>
</base>
<!--菜单项的款式-->
<menu-item>
<!--基础款式,节点切合trstyleattribute便可,可选。鼠标移出时利用该款式-->
<base>
<background-color>white</background-color>
<color>#006699</color>
</base>
<!--鼠标悬停时的款式,节点切合trstyleattribute便可,可选。-->
<mouse-over>
<background-color>#DDDDDD</background-color>
<color>#000066</color>
</mouse-over>
<!--菜单项与项之间的支解线,参数切合border款式便可。可选-->
<split-line>1solid#999999</split-line>
</menu-item>
</sub-menu>
</style>
<!--
contextpath相称于假造目次的别号。假如菜单的链接利用相对路径会见,则倡议设置该节点。
假如设置该节点则菜单的链接地点由该值加上菜单项设置的href组成。
该节点是可选的
-->
<context>
<path></path>
</context>
<!--
菜双数据。
menus下的节点视为主菜单,只要主菜单设置的宽度值才无效
菜单必需有text,href两个属性,target为可选属性,默许值为"_self"
text-菜单文本
href-菜单链接地点。假如不需链接请用"#";假如是实行某段javascript,请加上前缀javascript:
target-菜单翻开的窗口
-->
<menus>
<menutext="CSDN"href="#"target="_blank"width="60">
<menutext="网站首页"href="http://www.csdn.net"target="_blank">
</menu>
<menutext="服务"href="#">
<menutext="blog"href="http://community.csdn.net/"></menu>
<menutext="匡助"href="javascript:help();"></menu>
</menu>
</menu>
<menutext="SOHU"href="http://www.sohu.com"target="_blank"width="60">
</menu>
<menutext="NCUCEC"href="http://www.infocespace.cn"target="_blank"width="60">
<menutext="公司网站"href="http://www.infospace.cn"target="_blank"></menu>
<menutext="外部论坛"href="http://www.infospace.cn/forums"target="_self"></menu>
</menu>
</menus>
</popmenu>
4、利用例子
<html>
<head>
<title>javascript+xml二级下拉菜单(利用window.createPopup())</title>
</head>
<bodybgcolor="#cccccc">
<scriptlanguage="javascript"src="menu_script1.js"></script>
<scriptlanguage="javascript"src="menu_script2.js"></script>
<div>
<scriptlanguage="javascript">loadMenu("menu_data.xml");</script>
</div>
</body>
</html>
只需节点称号切合各自标签(table,tr,td之一)的styleattribute便可。
(3)主菜单项之间能够设置支解图片,
子菜单项能够设置支解线的款式。
(4)一切图片都由css把持,制止路径成绩。
(5)能够设置假造目次的别号,为菜单链接利用相对路径带来便利,如:
<context>
<path>hdsa</path>
</context>
设置该值后,用户只需依据文件的目次布局写佳肴单,而不用忧虑假造目次的成绩。
因为菜单利用了window.createPopup(),
以是它被限定在IE5.5以上,
并且子菜单假如是新开窗口,会被拦阻。
注:用window.createPopup()制造菜单遭到过后人的启示
设置该值后,用户只需依据文件的目次布局写佳肴单,而不用忧虑假造目次的成绩。
因为菜单利用了window.createPopup(),
以是它被限定在IE5.5以上,
并且子菜单假如是新开窗口,会被拦阻。
注:用window.createPopup()制造菜单遭到过后人的启示
=====================================================================
2、完成的两个剧本能够写在一个文件中:
(1)处置Popup窗口的剧本
//------------------上面一些函数用来处置弹出窗口------------------//
varpops=newArray();//用来存储Popup窗口家属的数组
functionCreatePopup(degree)
{
if(degree<0)//层数不克不及小于0
returnnull;
if(pops!=null)//假如已存在则不需创立
returnpops;
if(degree==0)
pops=window.createPopup();//创立最顶层Popup窗口
else{
if(pops==null)
pops=CreatePopup(degree-1)//递回回溯从第一层入手下手创立
pops=pops.document.parentWindow.createPopup();//从父Popup窗口创立子Popup窗口
}
pops.document.body.setAttribute("degree",degree);
returnpops;
}
CreatePopup(1);//创立一个2层的Popup家属
varoPopup=pops;
vartimer=null;
/**
*显现一级子菜单
*@paramobjShow-显现子菜单的工具
*@paramstrGetID-存储显现内容的标签id
*/
functionshowSubMenu1(objShow,strGetID){
clearTimer();
endHideSubMenu();
varobjGet=eval(document.getElementById(strGetID));
pops.hide();
pops.document.body.innerHTML=objGet.innerHTML;
pops.show(0,0,1,1,objShow);
varintWidth=pops.document.body.scrollWidth;
varintHeight=pops.document.body.scrollHeight;
pops.hide();
pops.show(10,objShow.offsetHeight-2,intWidth,intHeight,objShow);
}
/**
*显现二级菜单
*@paramstrGetID-存储显现内容的标签id
*@paramobjTr-显现子菜单的tr工具
*/
functionshowSubMenu2(strGetID,objTr){
clearTimer();
endHideSubMenu();
varobjGet=eval(document.getElementById(strGetID));
pops.document.body.innerHTML=objGet.innerHTML;
pops.show(0,0,1,1,pops.document.body);
varintWidth=pops.document.body.scrollWidth;
varintHeight=pops.document.body.scrollHeight;
pops.hide();
pops.show(objTr.offsetWidth-2,-2,intWidth,intHeight,objTr);
}
//埋没一级子菜单
functionhideSubMenu1(){
//pops.hide();
window.setTimeout("pops.hide()",1000);
}
//埋没二级子菜单
functionhideSubMenu2()
{
//clearTimer();
//timer=window.setTimeout("pops.hide()",1000);
pops.hide();
}
//埋没一切下拉菜单
functionhideSubMenu()
{
if(pops!=null)pops.hide();
if(pops!=null)pops.hide();
}
functionclearTimer()
{
if(timer!=null)
window.clearTimeout(timer)
timer=null;
//alert("OK");
}
(2)读取剖析xml数据文件,打印菜单的剧本
//地位信息
varm_strTitle="您的地位->";
//--------主菜单款式相干界说---------//
//界说主菜单款式
varm_strMainMenuStyle="";
//主菜单项的款式attribute
varm_strMainMenuItemStyle="";
//主菜单项款式Property
varm_strMMItemProBase={};
//主菜单项鼠标悬停款式Property
varm_strMMItemProMOver={};
//菜单项与项之间的支解图片
varm_strMMItemSplitImg;
//--------子菜单款式相干界说---------//
//界说子菜单款式
varm_strSubMenuStyle="";
//子菜单项的款式attribute
varm_strSubMenuItemStyle="";
//子菜单项款式Property
varm_strSMItemProBase={};
//子菜单项鼠标悬停款式Property
varm_strSMItemProMOver={};
//子菜单项下边框款式(作为支解线)
varm_strSMItemBorderB="";
//界说假造目次路径
varm_strContextPath="";
//菜单xml数据文件工具
varm_doc;
//主菜单汇合
varm_objMMList;
varSTR_POS_FRONT="您的地位:";
//loadMenu("main_menu.xml");
/**
*加载菜单
*@paramstrXMLPath-XML数据文件地点路径及文件名
*/
functionloadMenu(strXMLFile){
m_doc=newActiveXObject("MSXML2.DOMDocument.3.0");
m_doc.async=false;
m_doc.load(strXMLFile);
getMainMenuStyle();
getSubMenuStyle();
//失掉主菜单汇合
m_objMMList=m_doc.selectSingleNode("//popmenu/menus").childNodes;
//失掉假造目次
if(m_doc.selectSingleNode("//popmenu/context/path")){
m_strContextPath=m_doc.selectSingleNode("//popmenu/context/path").text;
}
//输入主菜单
printMainMenu();
//输入一级子菜单
printSubMenu();
}
/**
*鼠标移进移出主菜单款式的改动
*@paramobj-改动款式的工具
*@parambolChg-是不是改动款式
*/
functionchgMainMenuStyle(obj,bolChg)
{
if(bolChg){//鼠标悬停改动色彩
for(varproinm_strMMItemProMOver){
obj.style=m_strMMItemProMOver;
}
}else{//鼠标移出
obj.style.border="0";
for(varproinm_strMMItemProBase){
obj.style=m_strMMItemProBase;
}
}
}//endfunctionchgMainMenuStyle(obj,i)
/**
*鼠标移进移出子菜单款式的改动
*@paramobj-改动款式的工具
*@parambolChg-是不是改动款式
*/
functionchgSubMenuStyle(obj,bolChg){
if(bolChg){//鼠标悬停改动色彩
for(varproinm_strSMItemProMOver){
obj.style=m_strSMItemProMOver;
}
}else{//鼠标移出
for(varproinm_strSMItemProBase){
obj.style=m_strSMItemProBase;
}
}
}//endfunctionchgSubMenuStyle(obj,i)
/**
*机关节点款式
*@paramstrPath节点路径
*/
functiongetNodeStyle(strPath){
varstrStyle="";
if(m_doc.selectSingleNode(strPath)){
varnodeList=m_doc.selectSingleNode(strPath).childNodes;
for(vari=0;i<nodeList.length;i++){
varnodeName=nodeList.nodeName;
varnodeText=nodeList.text;
strStyle+=nodeName.toLowerCase()+":"+nodeText+";";
}
}
returnstrStyle;
}
/**
*机关节点StyleProperty
*/
functiongetNodeProperty(strPath){
vararrProperty={};
if(m_doc.selectSingleNode(strPath)){
varnodeList=m_doc.selectSingleNode(strPath).childNodes;
for(vari=0;i<nodeList.length;i++){
varnodeName=nodeList.nodeName;
nodeName=nodeName.toLowerCase();
varnodeText=nodeList.text;
//由attribute到property的变化。如background-color->backgroundColor
varaName=nodeName.split("-");
varstrProperty=aName;
for(varj=1;j<aName.length;j++){
strProperty+=aName.substring(0,1).toUpperCase()+aName.substr(1);
}
arrProperty=nodeText;
}
}
returnarrProperty;
}
/**
*失掉主菜单款式
*/
functiongetMainMenuStyle(){
//失掉主菜单款式
m_strMainMenuStyle=getNodeStyle("//popmenu/style/main-menu/base");
//失掉主菜单项款式
m_strMainMenuItemStyle=getNodeStyle("//popmenu/style/main-menu/menu-item/base");
//主菜单项的property
m_strMMItemProBase=getNodeProperty("//popmenu/style/main-menu/menu-item/base");
//失掉鼠标悬停时主菜单项各property改动
m_strMMItemProMOver=getNodeProperty("//popmenu/style/main-menu/menu-item/mouse-over");
//失掉菜单项与项之间的支解图片
if(m_doc.selectSingleNode("//popmenu/style/main-menu/menu-item/split-image")){
varnode=m_doc.selectSingleNode("//popmenu/style/main-menu/menu-item/split-image");
m_strMMItemSplitImg="background-image:"+node.text+";";
m_strMMItemSplitImg+="background-repeat:no-repeat;background-position:centercenter;";
}
}//endfunctiongetMainMenuStyle()
/**
*失掉主菜单款式
*/
functiongetSubMenuStyle(){
//失掉子菜单款式
m_strSubMenuStyle=getNodeStyle("//popmenu/style/sub-menu/base");
//失掉子菜单项款式
m_strSubMenuItemStyle=getNodeStyle("//popmenu/style/sub-menu/menu-item/base");
//子菜单项的property
m_strSMItemProBase=getNodeProperty("//popmenu/style/sub-menu/menu-item/base");
//失掉鼠标悬停时子菜单项各property改动
m_strSMItemProMOver=getNodeProperty("//popmenu/style/sub-menu/menu-item/mouse-over");
//失掉子菜单项下边框款式(作为支解线)
if(m_doc.selectSingleNode("//popmenu/style/sub-menu/menu-item/split-line")){
varnode=m_doc.selectSingleNode("//popmenu/style/sub-menu/menu-item/split-line");
m_strSMItemBorderB="border-bottom:"+node.text+";";
}
}//endfunctiongetSubMenuStyle()
varm_bolFirst=true;//是不是初次呼应菜单
document.onclick=function(){
m_bolFirst=true;
//alert(parent.frames);
}
top.document.onclick=function(){
m_bolFirst=true;
}
/**
*睁开各个主菜单
*@paramobjTd-主菜单地点td
*@paramstrSubMenuID-对应子菜单的id
*@parambolExistSubMenu-是不是存在子菜单
*/
functionspreadMainMenu(objTd,strSubMenuID,bolExistSubMenu){
varstrEvent=event.type.toLowerCase();
if(!pops.isOpen&&strEvent=="mou搜索引擎优化ver"&&m_bolFirst){
return;
}
if(pops.isOpen&&strEvent=="click"){
return;
}
chgMainMenuStyle(objTd,true);
endHideSubMenu();
if(bolExistSubMenu){
//假如有子菜单
showSubMenu1(objTd,strSubMenuID);
}else{
//hideSubMenu();
//m_bolFirst=false;//已不是第一次呼应菜单
}
}
//打印主菜单
functionprintMainMenu()
{
vardivStyle="width:100%;";
varstrHtml="";
strHtml="<divstyle="+divStyle+">";
strHtml+="<tablestyle="+m_strMainMenuStyle+"id=mmcellpadding=3><tr>";
//假如用户设置了支解图片则输入
if(m_strMMItemSplitImg&&m_strMMItemSplitImg!=""){
strHtml+="<tdstyle="+m_strMMItemSplitImg+"width=2></td>";
}
varintMenuWidth=0;
for(vari=0;i<m_objMMList.length;i++)
{
varmenuNode=m_objMMList;
varattList=menuNode.attributes;
varmenuText=attList.getNamedItem("text").text;
varmenuHref=attList.getNamedItem("href").text;
varmenuTarget="";
if(attList.getNamedItem("target"))
menuTarget=attList.getNamedItem("target").text;
else
menuTarget="_self";
varintMenuWidth;
if(attList.getNamedItem("width"))
intMenuWidth=attList.getNamedItem("width").text;
varstrSubMenuID="sm"+i;
varstrMouseOverEvent="";
varstrClickEvent="";
//假如有子拉菜单,则显现
if(menuNode.hasChildNodes()){
strMouseOverEvent="chgMainMenuStyle(this,true);spreadMainMenu(this,""+strSubMenuID+"",true);";
strClickEvent=strMouseOverEvent;
}else{
strMouseOverEvent="chgMainMenuStyle(this,true);";
strClickEvent="onClickEvent("+menuHref+","+menuTarget+","+menuText+");";
}
<P>strHtml+="<tdwidth="+intMenuWidth+"style="+m_strMainMenuItemStyle+"id=mm"+i+
""+
">"+menuText+"</td>";
//假如用户设置了支解图片则输入
if(m_strMMItemSplitImg&&m_strMMItemSplitImg!=""){
&n实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。 兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的 我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。 我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助: Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
页:
[1]