您的位置:首页 > Web前端 > JavaScript

JavaScript实现右键菜单(二)

2006-01-18 18:30 387 查看
/**
* <p>标题: BSRightItemArea</p>
* <p>功能描述: 右键菜单块。</p>
* <p>作者: BinaryStar</p>
* <p>版本: 0.1</p>
* <p>创建日期: 2005-12-21</p>
*/
function BSRightItemArea(pid, index, text){
this.pid = pid||"BSRightMenu_1";//ID
this.index = index;
this.id = this.pid + "_ItemArea_" + this.index;//ID
this.leftText = text||"BS 制作";//左边显示的文字
this.itemList = new Array();//右键菜单集合
this.thisItemIndex = -1;

//添加一个右键菜项
this.addItem = function (pIndex, text, jsfun, img, disabled){
var area = new BSRightItem(this.pid, this.index, this.id, pIndex, this.itemList.length, text, jsfun, img, disabled);
if (text.Trim() == "-" || text.Trim() == "" || text.Trim() == "sperator"){
area.isSperator = true;
}
//设置父节点的子项目
if (pIndex >= 0){
var pobj = eval(this.pid);
this.itemList[pIndex].childList.length++;
this.itemList[pIndex].childList[this.itemList[pIndex].childList.length-1] = area.index;
area.level = this.itemList[pIndex].level+1;
pobj.setMaxLevel(area.level);
}
this.itemList.length++;
this.itemList[this.itemList.length-1] = area;
return area;
}

//菜单项块的展现
this.show = function(){
var htmlStr = "<table border='0' cellspacing='0'>";
htmlStr += "<tr><td valign=/"top/" bgcolor=/"#000000/" onclick=/"window.event.cancelBubble=true;/" class=/"bs_rm_info_td/"><nobr><div class=/"bs_rm_info/">"+this.leftText+"</div></nobr>";
htmlStr += "</td><td style='padding: 1' valign='bottom'>";
htmlStr += "<table width='100%' border='0' cellspacing='0'>";
for (var i=0; i<this.itemList.length; i++){
if (this.itemList[i].pIndex < 0){
htmlStr += this.itemList[i].show();
}
}
htmlStr += "</table></td></tr></table>";
return htmlStr;
}

//设置选中的菜单项
this.setIndexItem = function (in_pIndex, thisIndex){
if (in_pIndex < 0 && thisIndex != this.thisItemIndex){
if (this.thisItemIndex >= 0){
var thisDiv = document.getElementById(this.itemList[this.thisItemIndex].id+"_tr");
if (thisDiv != null){
thisDiv.className = "bs_rm_out";
this.itemList[this.thisItemIndex].setImgSelect(thisDiv, false);
this.itemList[this.thisItemIndex].childIsShow = false;
}
}
this.thisItemIndex = thisIndex;
}
else if (in_pIndex >= 0){
var pItem = this.itemList[in_pIndex];
this.setFatherSel(in_pIndex);
if (thisIndex == pItem.thisItemIndex){
return;
}
if (pItem.thisItemIndex >= 0){
var thisDiv = document.getElementById(this.itemList[pItem.thisItemIndex].id+"_tr");
if (thisDiv != null){
thisDiv.className = "bs_rm_out";
pItem.childIsShow = false;
pItem.setImgSelect(thisDiv, false);
}
}
pItem.thisItemIndex = thisIndex;
}
}

this.setFatherSel = function (thisIndex){
if (thisIndex < 0){
return;
}
var thisItem = this.itemList[thisIndex];
var thisDiv = document.getElementById(this.itemList[thisIndex].id+"_tr");
if (thisDiv != null){
thisDiv.className = "bs_rm_over";
thisItem.setImgSelect(thisDiv, true);
}
if (thisItem.pIndex > 0){
this.setFatherSel(thisItem.pIndex);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: