JavaScript实现右键菜单(二)

来源:互联网 发布:淘宝店铺名片设计网站 编辑:程序博客网 时间:2024/05/01 05:57
 

/**
 * <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);
      }
  }
}

原创粉丝点击