/*   动态生成菜单,其中菜单的参数写在 writeMenuLayer()中的 MenuHtml值:
*/
var timeoutID;
var TDId;
var bgcolor="#ff00ff";
var strFrame; //存放菜单层的HTML代码
document.writeln('<iframe id=frameMenuLayer frameborder=0 style=" position: absolute;  z-index: 9998;width: 202; height: 155; display: none"></iframe>');
strFrame='<div id=MenuPlne style="background:'+bgcolor+'; z-index: 9999; position: absolute; left: 0; top: 0; " onselectstart="return false">';
strFrame=strFrame+'<table border=0 cellspacing=0 cellpadding=0   bgcolor='+bgcolor+'>';
strFrame+='<tr > <td  valign="top" width=100%> <span id=menuContent></span> ' ;
strFrame+='</td></tr></table></div>';window.frames.frameMenuLayer.document.writeln(strFrame);
window.frames.frameMenuLayer.document.close();
var odatelayer=window.frames.frameMenuLayer.document.all; //存放菜单的对象var outObject; 
var outButton; //点击的按钮
function writeMenuLayer(){
   var MenuHtml="";
   MenuHtml=MenuHtml+'<div id=Menu style=" position: absolute; background:#DFF0FF z-index: 9998;width: 0; height: 0; display: block">';
   MenuHtml=MenuHtml+'<table border="0" width=200>';
   MenuHtml=MenuHtml+'<tr> <td width=35><INPUT TYPE=button onMouseUp="parent.clearTime()" onMouseDown="parent.DoUntilUp(&quot;width&quot;,&quot;add&quot;)" VALUE="增宽" style="background: #99FFFF; border: thick"></td>';
   MenuHtml=MenuHtml+'<td width="108"></td><td width="35"><INPUT TYPE=button onMouseUp="parent.clearTime()" onMouseDown="parent.DoUntilUp(&quot;width&quot;,&quot;sub&quot;)" VALUE="减宽" style="background: #99FFFF; border: thick"></td></tr>';
MenuHtml=MenuHtml+'<tr><td width="35"> </td><td width="108"><a onclick="parent.closeLayer()"><img border="0" src="/bg/30_7221.gif" width="106" height="98"></a></td>';
MenuHtml=MenuHtml+'<td width="35"> </td></tr><tr><td width="35"><INPUT TYPE=button onMouseUp="parent.clearTime()" onMouseDown="parent.DoUntilUp(&quot;height&quot;,&quot;add&quot;)" VALUE="增高" style="background: #99FFFF; border: thick"></td>';
MenuHtml=MenuHtml+'<td width="108"></td><td width="35"><INPUT TYPE=button onMouseUp="parent.clearTime()" onMouseDown="parent.DoUntilUp(&quot;height&quot;,&quot;sub&quot;)" VALUE="减高" style="background: #99FFFF; border: thick"></td></tr>';
   MenuHtml=MenuHtml+'</table></div>';
//存放菜单项层的HTML代码
odatelayer.menuContent.innerHTML= MenuHtml;
}function al(r){
   alert(r);
}function CreateMenu(menu){ //主调函数  menu表示当前的object 一般是 this
if (arguments.length == 0){alert("对不起!您没有传回本控件任何参数!");return;}
var dads  = document.all.frameMenuLayer.style;
var th = menu; 
var ttop  = menu.offsetTop;     //menu控件的定位
var thei  = menu.clientHeight;  //menu控件本身的高
var tleft = menu.offsetLeft;     //menu控件的定位点宽
var ttyp  = menu.type;          //menu控件的类型 
//如何判断本热点是在按扭上,还是在链接上,还是在图片上?
while (menu = menu.offsetParent){ttop+=menu.offsetTop; tleft+=menu.offsetLeft;}  //此处对menu已赋值了
dads.top  = (ttyp=="button")? ttop+thei+0 : ttop+thei+6;  //原来的偏差值为6 ,对于按扭和操作的偏差值要分别处理。
dads.left = tleft; 
outObject = th;
outButton = th; //设定外部点击的按钮

writeMenuLayer();
       dads.display = 'block';
}
function document.onclick() //任意点击时关闭该控件 //ie6的情况可以由下面的切换焦点处理代替

  with(window.event)
  { 
     if ( srcElement != outObject && srcElement != outButton)
   closeLayer();
  }
}
function document.onkeyup() //按Esc键关闭,切换焦点关闭
  {
    if (window.event.keyCode==27){
if(outObject)outObject.blur();
closeLayer();
}
else if(document.activeElement)
if(document.activeElement != outObject && document.activeElement != outButton)
{
closeLayer();
}
  }function closeLayer()               //这个层的关闭
  {
    document.all.frameMenuLayer.style.display="none";
  }

解决方案 »

  1.   

    function readPara(){ //读域中的参数把写到表格中,更新表格格式
       ATable = new Array();
       var sIdname;
       var sWidth;
       var sHeight;
       var sWH;
       var iInt;
       var TableTd;
       ATable = document.forms[0].AdjustTdWH.value.split("&");
       if (ATable=="") return false;
       for(i=0;i<ATable.length;i++){ //解码
     iInt=ATable[i].indexOf("=");
     sIdname=ATable[i].substring(0,iInt);
     if (sIdname=="") return false;
          TableTd=document.getElementById(sIdname);
          if (TableTd!=null){
              sWH=ATable[i].substring(iInt+1,ATable[i].length);
              iInt=sWH.indexOf(",");
              sWidth=sWH.substring(1,iInt);
              sHeight=sWH.substring(iInt+1,sWH.length-1);
              TableTd.width=sWidth;
              TableTd.height=sHeight;
          }      
      }
    }function EvluTableAtrr(){ //如果参数是空,就要对全部的表格进行处理.如果有参数,对表格的ID是该参数的表格进行处理
      if (arguments.length>0){
           for(var j=0;j<arguments.length;j++){
              var table=document.getElementById(arguments[j]);
    //         table.onmousedown=function() {AdjustTD(this);};//此处要改成记录表格的ID就行了.
              var tds=table.getElementsByTagName("TD");
              for(var i=0; i<tds.length; i++)  {
                  tds[i].id=table.id+"_"+tds[i].parentNode.rowIndex+"_"+tds[i].cellIndex;
                  tds[i].onclick=function() {RecordID(this);};
              }
           }
       }else{
           var tables=document.getElementsByTagName("TABLE");
           for(var j=0; j<tables.length; j++)  {
              tables[j].id="TABLE_"+j;
              var table=document.getElementById(tables[j].id);
    //          table.onmousedown=function() {AdjustTD(this);};
              var tds=table.getElementsByTagName("TD");
              for(var i=0; i<tds.length; i++)  {
                 tds[i].id=table.id+"_"+tds[i].parentNode.rowIndex+"_"+tds[i].cellIndex;
                 tds[i].onclick=function() {RecordID(this);CreateMenu(this);};
              }
           }
       }
    }function RecordID(self){
       TDId=self.id;
    }function AdjustTD3(self){
       if(event.srcElement.tagName=="TD"){
             var idname=event.srcElement.id;
             if (event.button==2){
                event.srcElement.width=2+parseInt(event.srcElement.width);
                varwidth=event.srcElement.width;
                if(event.srcElement.height=="") event.srcElement.height=event.srcElement.clientHeight;            
                varheight=event.srcElement.height;
             }
             if (event.button==1){           
                varwidth=event.srcElement.width;
                if(event.srcElement.height=="") event.srcElement.height=event.srcElement.clientHeight;    
                event.srcElement.height=2+parseInt(event.srcElement.height);     
                varheight=event.srcElement.height;
             }
                var para=""+idname+"=("+varwidth+","+varheight+")"
                addIDStyle(para);
          
        }
    }
    function AdjustTD(WorH,symbol){  // WorH,表示宽或高“width”,"height",symbol表示加或减,"add" "sub" 
     var TableTD=document.getElementById(TDId);
     if (TableTD==null) return false;
             var idname=TableTD.id;
            if (WorH=="width"){
                if (symbol=="add") TableTD.width=2+parseInt(TableTD.width);
                else if (parseInt(TableTD.width)>2) TableTD.width=parseInt(TableTD.width)-2;
                varwidth=TableTD.width;
                if(TableTD.height=="") TableTD.height=TableTD.clientHeight;            
                varheight=TableTD.height;
             }
             if ((WorH=="height")){           
                varwidth=TableTD.width;
                if(TableTD.height=="") TableTD.height=TableTD.clientHeight;
                if (symbol=="add") TableTD.height=2+parseInt(TableTD.height); 
                else  if(parseInt(TableTD.height)>2) TableTD.height=parseInt(TableTD.height)-2;     
                varheight=TableTD.height;
             }
                var para=""+idname+"=("+varwidth+","+varheight+")";
                addIDStyle(para);     
    }function addIDStyle(a){  //参数A的格式:id=(a,1)
         var sIdname=a.substring(0,a.indexOf("="));     
         var AdjustTdWH=document.forms[0].AdjustTdWH.value;
         var iInt=AdjustTdWH.indexOf(sIdname+"=");
         if (iInt>-1){
              var substring=AdjustTdWH.substring(iInt,AdjustTdWH.indexOf(")",iInt)+1);
              document.forms[0].AdjustTdWH.value=AdjustTdWH.replace(substring,a);
         }else{
              if (AdjustTdWH=="") document.forms[0].AdjustTdWH.value=a;
              else  document.forms[0].AdjustTdWH.value=AdjustTdWH+"&"+a;
         }
    }
    function DoUntilUp(height, sub){
       eval("timeoutID=setInterval(\"AdjustTD( '"+height+"' ,'"+sub+"')\",80)");
    }
    function clearTime(){
         clearTimeout(timeoutID);
    }
    function UpdatePara(){
    var pathdb=document.URL;
        var lenth=pathdb.indexOf(".nsf")+4;
        var path=pathdb.substr(0,lenth);
        path=path+"/UpPrintPara?openAgent&"
        var para=document.forms[0].AdjustTdWH.value;
        if (para=="") {
            alert("没有参数,不需要上传了");
             return false;
        }else window.open (path+para,'','status=no,resizable=yes,scrollbars=no,screenX=100,screenY=100,width=0,height=0' );
    }
      

  2.   

    楼主好像还没帖完
    CSDN好像自已不能连续写三帖
    支持你一下
      

  3.   

    完了,可以用了.很好用,昨天改一其中的一两句:
    function EvluTableAtrr(){ //如果参数是空,就要对全部的表格进行处理.如果有参数,对表格的ID是该参数的表格进行处理
      if (arguments.length>0){
           for(var j=0;j<arguments.length;j++){
              var table=document.getElementById(arguments[j]);
    //         table.onmousedown=function() {AdjustTD(this);};//此处要改成记录表格的ID就行了.
              var tds=table.getElementsByTagName("TD");
              for(var i=0; i<tds.length; i++)  {
                  tds[i].id=table.id+"_"+tds[i].parentNode.rowIndex+"_"+tds[i].cellIndex;
                  tds[i].onclick=function() {RecordID(this);CreateMenu(this);};
              }
           }
       }else{
           var tables=document.getElementsByTagName("TABLE");
           for(var j=0; j<tables.length; j++)  {
              if(tables[j].id=="")tables[j].id="TABLE_"+j;
              var table=document.getElementById(tables[j].id);
    //          table.onmousedown=function() {AdjustTD(this);};
              var tds=table.getElementsByTagName("TD");
              for(var i=0; i<tds.length; i++)  {
                 tds[i].id=table.id+"_"+tds[i].parentNode.rowIndex+"_"+tds[i].cellIndex;
                 tds[i].onclick=function() {RecordID(this);CreateMenu(this);};
              }
           }
       }
    }