打印本文 打印本文 关闭窗口 关闭窗口
javascript+xml实现二级下拉菜单一
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1876  更新时间:2009/4/23 11:26:53  文章录入:mintao  责任编辑:mintao
<td style='" + m_strMMItemSplitImg + "' width=2></td>";
}
var intMenuWidth = 0;

for ( var i = 0 ; i< m_objMMList.length ; i ++ )
{
var menuNode = m_objMMList[i];
var attList = menuNode.attributes;
var menuText = attList.getNamedItem("text").text;
var menuHref = attList.getNamedItem("href").text;
var menuTarget = "";
if( attList.getNamedItem("target") )
menuTarget = attList.getNamedItem("target").text;
else
menuTarget = "_self";

var intMenuWidth;
if( attList.getNamedItem("width") )
intMenuWidth = attList.getNamedItem("width").text;

var strSubMenuID = "sm" + i;
var strMouseOverEvent = "";
var strClickEvent = "";
//如果有子拉菜单,则显示
if ( menuNode.hasChildNodes() ){
strMouseOverEvent = "chgMainMenuStyle(this,true);spreadMainMenu(this,\"" + strSubMenuID + "\",true);";
strClickEvent = strMouseOverEvent;
}else{
strMouseOverEvent = "chgMainMenuStyle(this,true);";
strClickEvent = "onClickEvent('" + menuHref + "','" + menuTarget + "','" + menuText + "');";
}

strHtml += "<td width=" + intMenuWidth + " style='" + m_strMainMenuItemStyle + "' id=mm" + i +
" onmouseover=" + strMouseOverEvent +
" onmouseout='chgMainMenuStyle(this,false);beginHideSubMenu();' " +
" onclick=" + strClickEvent +
" >" + menuText+"</td>";

//如果用户设置了分割图片则输出
if( m_strMMItemSplitImg && m_strMMItemSplitImg != "" ){
strHtml += "<td style='" + m_strMMItemSplitImg + "' width='2'></td>";
}
}
strHtml += "<td></td>";
strHtml += "</tr>";
strHtml += "</table>";
strHtml += "</div>";

document.write(strHtml);
}//end printMainMenu()

//打印一级子菜单
function printSubMenu() {
for ( var i = 0 ; i< m_objMMList.length ; i ++ ) {
menuNode = m_objMMList[i];
//如果没有子菜单,执行下一个循环
if ( !menuNode.hasChildNodes() ){
continue;
}

//得到主菜单下的子菜单集合
var objSMList = menuNode.childNodes;
var intSubMenuLen = objSMList.length;

//每个主菜单对应的子菜单id
var strSubMenuID = "sm" + i;
//arrMenuID.push(strSubMenuID);

var strSubMenuHtml = "<div style='display:none;border:0;' id='" + strSubMenuID + "'>" +
" <table cellspacing='0' cellpadding='4' style='" + m_strSubMenuStyle + "'>";

for ( var j = 0;j < intSubMenuLen;j ++ ) {
var objSubMenu = objSMList[j];
var attList = objSubMenu.attributes;
var menuText = attList.getNamedItem("text").text;
var menuHref = attList.getNamedItem("href").text;
var menuTarget = "";
if( attList.getNamedItem("target") )
menuTarget = attList.getNamedItem("target").text;
else
menuTarget = "_self";

//如果有三级子菜单,则需要箭头标识
var strRightRow = " ";
//二级子菜单id
var strSubMenu2ID = strSubMenuID + "_sm" + j;
//鼠标悬停和移出时一级子菜单的响应
var strMouseOverEvent = "parent.chgSubMenuStyle(this,true);parent.endHideSubMenu();";
var strMouseOutEvent = " parent.chgSubMenuStyle(this,false);parent.beginHideSubMenu();";

//位置信息显示
var strPosition = STR_POS_FRONT + m_objMMList[i].attributes.getNamedItem("text").text + "->"
+ menuText;
//alert(strPosition);
if ( objSubMenu.hasChildNodes() ) {
//打印其二级子菜单
printSubMenu2(objSubMenu,strSubMenu2ID,strPosition);

strMouseOverEvent += "parent.showSubMenu2(\"" + strSubMenu2ID + "\",this);";
//strMouseOutEvent += "parent.beginHideSubMenu();";
strRightRow = "<font style='font-family:Webdings;font-size:7pt;height:10'>4</font>";
strPosition = "";
} else {
//strMouseOverEvent += "parent.endHideSubMenu();";
strMouseOverEvent += "parent.hideSubMenu2();";
}
var strOnClickEvent = "javascript:parent.onClickEvent('" + menuHref + "','" + menuTarget + "','" + strPosition + "');"
strSubMenuHtml += "<tr style='" + m_strSubMenuItemStyle + "' " +
" onmouseover='" + strMouseOverEvent + "' " +
" onmouseout='" + strMouseOutEvent + "' " +
" onclick= " + strOnClickEvent + " " +
" > <td width='3' nowrap style='" + m_strSMItemBorderB + "'> </td>"+
"  <td nowrap style='" + m_strSMItemBorderB + "'>" + menuText + "</td>"+
"  <td width='10' align='right' nowrap style='" + m_strSMItemBorderB + "'>" + strRightRow + "</td>" +
"</tr>";
//alert(objSubMenu.text.length);

}//end for 子菜单个数循环

strSubMenuHtml += "</table></div>";

document.write(strSubMenuHtml);

}//end for 主菜单个数循环
}//end function printSubMenu()

/**打印二级子菜单
*objSubMenu : 一级子菜单对象
*strSubMenu2ID :将要打印的二级菜单的id
*strPosition:主菜单和一级子菜单文本描述
*/
function printSubMenu2(objSubMenu,strSubMenu2ID,strPosition)
{
//arrMenuID.push(strSubMenu2ID);
var objSMList = objSubMenu.childNodes;
var intSubMenu2Len = objSMList.length;

var strSubMenu2Html = "<div style='display:none;border:0;' id='" + strSubMenu2ID + "'>" +
" <table cellspacing='0' cellpadding='4' style='" + m_strSubMenuStyle + "'>";

for ( var i = 0; i< intSubMenu2Len;i ++ )
{
var objSubMenu2 = objSMList[i];
var attList = objSubMenu2.attributes;
var menuText = attList.getNamedItem("text").text;
var menuHref = attList.getNamedItem("href").text;

var menuTarget = "";
if( attList.getNamedItem("target") )
menuTarget = attList.getNamedItem("target").text;
else
menuTarget = "_self";

var strPostion2 = strPosition + "->" + menuText;

strSubMenu2Html += "<tr style='" + m_strSubMenuItemStyle + "' " +
" onmouseover='parent.parent.chgSubMenuStyle(this,true);" +
" parent.parent.endHideSubMenu(); ' " +
" onmouseout='parent.parent.chgSubMenuStyle(this,false);parent.parent.beginHideSubMenu();' " +
" onclick=javascript:parent.parent.onClickEvent('" + menuHref + "','" + menuTarget + "','" + strPostion2 + "'); " +
" > <td width='3' nowrap style='" + m_strSMItemBorderB + "'> </td>"+
"  <td nowrap style='" + m_strSMItemBorderB + "'>" + menuText + "</td>"+
"  <td width='3' nowrap style='" + m_strSMItemBorderB + "'> </td>" +
"</tr>";
}
strSubMenu2Html += "</table></div>";

document.write(strSubMenu2Html);

}//end function printSubMenu2

/**
*打开链接,所有菜单的链接都是通过这个函数来打开。并显示位置信息
*@param strUrl - 打开链接的地址
*@param strTarget - 打开链接的target。如_self,_blank等
*@param strViewText - 位置信息
*/
function onClickEvent(strUrl,strTarget,strViewText)
{
m_bolFirst = true;//以后响应菜单时变为为第一次响应
//document.all.selected_menu.innerText = strViewText;

m_strTitle = "";
var arrText = strViewText.split("->");
if ( arrText.length >0 )
m_strTitle = arrText[0];
for (var i = 1; i < arrText.length ; i ++ )
{
m_strTitle += "-" + arrText[i];
}
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字符串
function executeScript(strScript)
{
//第一个eval得到该字符串表示的变量,第二个eval则执行变量里的脚本
eval(strScript);
}

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口