一个右键菜单,有人能帮我修改成多级菜单吗?
<!--
// menu object
function contextMenu()//显示部分
{
this.items = new Array();
this.addItem = function (item)
{
this.items[this.items.length] = item;
}
this.show = function (oDoc)
{
var var urodz = new Date("January 1, 2000");
var now = new Date();
var ile = urodz.getTime() - now.getTime();
var dni = Math.floor(ile / (1000 * 60 * 60 * 24));
if (dni > 1)
document.write(dni + " days left to year 2000!")
else if (dni == 1)
document.write("Only two days left to year 2000!")
else if (dni == 0)
document.write("Tommorow is year 2000!")
else
document.write("January 1, 2000 - year 2000");
startday = new Date();
clockStart = startday.getTime();
function initStopwatch()
{
var myTime = new Date();
var timeNow = myTime.getTime();
var timeDiff = timeNow - clockStart;
this.diffSecs = timeDiff/1000;
return(this.diffSecs);
}
function getSecs()
{
var mySecs = initStopwatch();
var mySecs1 = ""+mySecs;
mySecs1= mySecs1.substring(0,mySecs1.indexOf(".")) + " secs.";
document.forms[0].timespent.value = mySecs1
window.setTimeout('getSecs()',1000);
}
document.write("<input size=9 name=timespent>");
getSecs();
= "";
var i;
strShow = "<div id=\"rightmenu\" style=\"BACKGROUND-COLOR: #ffffff; BORDER: #000000 1px solid; LEFT: 0px; POSITION: absolute; TOP: 0px; VISIBILITY: hidden; Z-INDEX: 10\">";
strShow += "<table border=\"0\" height=\"";
strShow += this.items.length * 20;
strShow += "\" cellpadding=\"0\" cellspacing=\"0\">";
strShow += "<tr height=\"3\"><td bgcolor=\"#d0d0ce\" width=\"2\"></td><td>";
strShow += "<table border=\"0\" width=\"100%\" height=\"100%\" cellpadding=0 cellspacing=0 bgcolor=\"#ffffff\">";
strShow += "<tr><td bgcolor=\"#d0d0ce\" width=\"23\"></td><td><img src=\" \" height=\"1\" border=\"0\"></td></tr></table>";
strShow += "</td><td width=\"2\"></td></tr>";
strShow += "<tr><td bgcolor=\"#d0d0ce\"></td><td>";
strShow += "<table border=\"0\" width=\"100%\" height=\"100%\" cellpadding=3 cellspacing=0 bgcolor=\"#ffffff\">";
oDoc.write(strShow);
for(i=0; i<this.items.length; i++)
{
this.items[i].show(oDoc);
}
strShow = "</table></td><td></td></tr>";
strShow += "<tr height=\"3\"><td bgcolor=\"#d0d0ce\"></td><td>";
strShow += "<table border=\"0\" width=\"100%\" height=\"100%\" cellpadding=0 cellspacing=0 bgcolor=\"#ffffff\">";
strShow += "<tr><td bgcolor=\"#d0d0ce\" width=\"23\"></td><td><img src=\" \" height=\"1\" border=\"0\"></td></tr></table>";
strShow += "</td><td></td></tr>";
strShow += "</table></div>\n";
oDoc.write(strShow);
}
}
// menu Item object
function contextItem(text, icon, cmd, type)
{
this.text = text ? text : "";
this.icon = icon ? icon : "";
this.cmd = cmd ? cmd : "";
this.type = type ? type : "menu";
this.show = function (oDoc)
{
var strShow = "";
if(this.type == "menu")
{
strShow += "<tr ";
strShow += "onmouseover=\"changeStyle(this, 'on');\" ";
strShow += "onmouseout=\"changeStyle(this, 'out');\" ";
strShow += "onclick=\"";
strShow += this.cmd;
strShow += "\">";
strShow += "<td class=\"ltdexit\" width=\"16\">";
if (this.icon == "")
strShow += " ";
else {
strShow += "<img border=\"0\" src=\"";
strShow += this.icon;
strShow += "\" width=\"16\" height=\"16\" style=\"POSITION: relative\"></img>";
}
strShow += "</td><td class=\"mtdexit\">";
strShow += this.text;
strShow += "</td><td class=\"rtdexit\" width=\"5\"> </td></tr>";
}
else if (this.type == "separator")
{
strShow += "<tr><td class=\"ltdexit\"> </td>";
strShow += "<td class=\"mtdexit\" colspan=\"2\"><hr color=\"#000000\" size=\"1\"></td></tr>";
}
oDoc.write(strShow);
}
}
function changeStyle(obj, cmd)
{
if(obj) try {
var imgObj = obj.children(0).children(0);
if(cmd == 'on') {
obj.children(0).className = "ltdfocus";
obj.children(1).className = "mtdfocus";
obj.children(2).className = "rtdfocus";
if(imgObj)
{
if(imgObj.tagName.toUpperCase() == "IMG")
{
imgObj.style.left = "-1px";
imgObj.style.top = "-1px";
}
}
}
else if(cmd == 'out') {
obj.children(0).className = "ltdexit";
obj.children(1).className = "mtdexit";
obj.children(2).className = "rtdexit";
if(imgObj)
{
if(imgObj.tagName.toUpperCase() == "IMG")
{
imgObj.style.left = "0px";
imgObj.style.top = "0px";
}
}
}
}
catch (e) {}
}
function showMenu()
{
var x, y, w, h, ox, oy;
x = event.clientX;
y = event.clientY;
var obj = document.getElementById("rightmenu");
if (obj == null)
return true;
ox = document.body.clientWidth;
oy = document.body.clientHeight;
if(x > ox || y > oy)
return false;
w = obj.offsetWidth;
h = obj.offsetHeight;
if((x + w) > ox)
x = x - w;
if((y + h) > oy)
y = y - h;
obj.style.posLeft = x + document.body.scrollLeft;
obj.style.posTop = y + document.body.scrollTop;
obj.style.visibility = "visible";
return false;
}
function hideMenu()
{
if(event.button == 0)
{
var obj = document.getElementById("rightmenu");
if (obj == null)
return true;
obj.style.visibility = "hidden";
obj.style.posLeft = 0;
obj.style.posTop = 0;
}
}
function writeStyle()
{
var strStyle = "";
strStyle += "<STYLE type=text/css>";
strStyle += "TABLE {Font-FAMILY: \"Tahoma\",\"Verdana\",\"宋体\"; FONT-SIZE: 9pt}";
strStyle += ".mtdfocus {BACKGROUND-COLOR: #ccccff; BORDER-BOTTOM: #000000 1px solid; BORDER-TOP: #000000 1px solid; CURSOR: hand}";
strStyle += ".mtdexit {BACKGROUND-COLOR: #ffffff; BORDER-BOTTOM: #ffffff 1px solid; BORDER-TOP: #ffffff 1px solid}";
strStyle += ".ltdfocus {BACKGROUND-COLOR: #ccccff; BORDER-BOTTOM: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; CURSOR: hand}";
strStyle += ".ltdexit {BACKGROUND-COLOR: #d0d0ce; BORDER-BOTTOM: #d0d0ce 1px solid; BORDER-TOP: #d0d0ce 1px solid; BORDER-LEFT: #d0d0ce 1px solid}";
strStyle += ".rtdfocus {BACKGROUND-COLOR: #ccccff; BORDER-BOTTOM: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-RIGHT: #000000 1px solid; CURSOR: hand}";
strStyle += ".rtdexit {BACKGROUND-COLOR: #ffffff; BORDER-BOTTOM: #ffffff 1px solid; BORDER-TOP: #ffffff 1px solid; BORDER-RIGHT: #ffffff 1px solid}";
strStyle += "</STYLE>";
document.write(strStyle);
}
function makeMenu()
{
var myMenu, item;
var homepage_cmd = "http://gamethinking.yeah.net/";
var favorate_cmd = "window.external.addFavorite('http://gamethinking.yeah.net/','游戏思想'); return false;";
var viewcode_cmd = "window.location = 'view-source:' + window.location.href";
myMenu = new contextMenu();
var Newmenu=new Array()
var Newmenu1=new Array()
Newmenu[0]="返回主页"
Newmenu1[0]="location.href='http://www.baidu.com'"
Newmenu[1]="设为主页"
Newmenu1[1]="location.href='http://www.baidu.com'"
for(i=0;i<Newmenu.length;i++){
item = new contextItem(Newmenu[i], "images/main.gif", Newmenu1[i], "menu");
myMenu.addItem(item);
}
myMenu.show(this.document);
delete item;
delete myMenu;
}
function toggleMenu(isEnable)
{
if(isEnable)
document.oncontextmenu = showMenu;
else
document.oncontextmenu = new function() {return true;};
}
writeStyle();
makeMenu();
document.onclick = hideMenu;
document.oncontextmenu = showMenu;
file://-->
问题点数:10、回复次数:5Top
1 楼fzlklmy()回复于 2006-06-01 12:32:31 得分 0
这个JS现在只能是单级菜单,我想把它改成多级的,有办法吗?
如果有右键多级菜单的代码,麻烦贴下!!!
最好能动态修改的,我最终要的就是那个效果.................
谢谢先Top
2 楼snmr_com(麒麟厍人)回复于 2006-06-01 13:30:17 得分 0
多级的,你昨天贴的那个不是能实现了吗?Top
3 楼fzlklmy()回复于 2006-06-01 16:03:01 得分 0
但代码我看不太懂,要改成动态的恐怕能力差的不是一点点啊!!!!
主要是怎么实现多级这步迈不出去!Top
4 楼snmr_com(麒麟厍人)回复于 2006-06-01 16:51:48 得分 10
我按昨天那个给你讲解一下吧,比这个容易理解一些
首先第一段<script>……</script>原封不动
只要修改下面这段
<SCRIPT language=JScript>
<!--
var menu = new RightMenu();
menu.AddExtendMenu("update","start_update","4","Web Update","rbpm",null);
menu.AddExtendMenu("update1","start_update","3","Web Update01","update","http://www.baidu.com");
menu.AddItem("update","start_update","3","Web Update02","update","http://www.baidu.com");
menu.AddItem("update1","start_update","3","Web Update03","update1","http://www.baidu.com");
menu.AddItem("update3","start_update","3","Web Update03","rbpm","http://www.baidu.com");
menu.AddItem("suan","start_update","a","大蒜之乡","rbpm","http://");
menu.AddItem("sperator","start_update","","","rbpm",null);
document.writeln(menu.GetMenu());
-->
</SCRIPT>
括号内参数是这样的("名称","不清楚","不清楚","上一层的名称","网址")
menu.AddExtendMenu("update","start_update","4","Web Update","rbpm",null);
这一句是添加一个有下一层的菜单项
update 是个名字,自己建,不要与其它重复
start_update 这个不太了解是什么,
4 这个是什么也不太了解,你调试的时候可以试着换其他看看有没有错误
Web Update 这个是菜单项显示的内容,就是看到的文字
rbpm 这个是表示上一层是最顶层,套用这个程序就不能改
null 表示没有网址
menu.AddItem("update","start_update","3","Web Update02","update","http://www.baidu.com");
这句表示添加一个菜单项,但它下面没有子菜单了
update 也是个名称
Web Update02 时显示的内容
再一个update表示他的上一层名称是update
http://www.baidu.com 当然是它连接出去的网址了
menu.AddItem("sperator","start_update","","","rbpm",null);
这句可能表示一个分隔符,建议你修改后的菜单最后也保留这句
下面几句也照着这样理解就可以了
你修改前先备份一次代码,然后边改边看效果,大不了重新做一次
Top
5 楼fzlklmy()回复于 2006-06-02 15:45:11 得分 0
..............謝謝啊,那個我看懂了!
就是不能改成動態的,有點美中不足了,呵呵~~~~Top




