• 未完成的代码(JS)


    本来打算写个显示数据库关系的页面,可惜JS太慢了。代码又舍不得扔,就放在这里。

    <html>
    <head> 
    <title>javascript绘图</title> 
    <style>
    td
    {font-size:12px}
    </style>
    </head> 
    <script src="line.js"></script>
    <script language="javascript">
    var Obj
    function MouseDown(obj){
    var o = window.event.srcElement;
    if (o.IsMove)
    {
        Obj
    =obj;
        Obj.setCapture();
        Obj.l
    =event.x-Obj.style.pixelLeft;
        Obj.t
    =event.y-Obj.style.pixelTop;
    }

    }

    function MouseMove(){
    if(Obj!=null){
        Obj.style.left 
    = event.x-Obj.l;
        Obj.style.top 
    = event.y-Obj.t;
        }

    }

    function MouseUp(){
    if(Obj!=null){
        Obj.releaseCapture();
        Obj
    =null;
        }

    }


    function link(e)
    {
        
    var obj1 = document.all.t1;
        
    var obj2 = document.all.t2;

    document.all.printLine.innerHTML 
    = "";
    Line(getPos(obj1)[
    1]-96,getPos(obj1)[0]-13,getPos(obj2)[1]-96,getPos(obj2)[0]-13);

    }

    function getPos(cell)
    {
        
    var pos = new Array();
        
    var t=cell.offsetTop;
        
    var l=cell.offsetLeft;
        
    while(cell=cell.offsetParent)
        
    {
            t
    +=cell.offsetTop;
            l
    +=cell.offsetLeft;
        }

        pos[
    0= t;
        pos[
    1= l;
        
    return pos;
    }



    </script>
    <body bgcolor="#ffffff"> 
    <div style="position:absolute;" onmousedown=MouseDown(this) onmousemove=MouseMove() onmouseup=MouseUp()>
    <TABLE border="1" bordercolor="white"cellpadding="0" cellspacing="0" bordercolorlight="black" id="t1">
    <TR>
        
    <TD style="padding:3px" style="cursor:hand" IsMove="true">Table Name</TD>
    </TR>
    <TR>
        
    <TD>
            
    <table width="98%">
                
    <tr><td width="20">&</td><td>C1</td></tr>
                
    <tr><td></td><td>C2</td></tr>
                
    <tr><td></td><td>C3</td></tr>
            
    </table>
        
    </TD>
    </TR>
    </TABLE>
    </div>


    <div style="position:absolute;left:100px" onmousedown=MouseDown(this) onmousemove=MouseMove() onmouseup=MouseUp()>
    <TABLE border="1" bordercolor="white"cellpadding="0" cellspacing="0" bordercolorlight="black" id="t2">
    <TR>
        
    <TD style="padding:3px" style="cursor:hand" IsMove="true">Table Name</TD>
    </TR>
    <TR>
        
    <TD>
            
    <table width="98%">
                
    <tr><td width="20">&</td><td>C1</td></tr>
                
    <tr><td></td><td>C2</td></tr>
                
    <tr><td></td><td>C3</td></tr>
            
    </table>
        
    </TD>
    </TR>
    </TABLE>
    </div>
    <div style="position:absolute;left:100px" id="printLine"></div>
    <INPUT TYPE="button" onclick="link(this);" value="显示关系">
    </body>
    </html>


    line.js

    var rad = Math.PI/180 
    var maxY = 400 
    var color = "red" 
    var Ox = -1 
    var Oy = -1 

    function outPlot(x,y,w,h) { 
        print('
    <span style="position:absolute;left:'+x+';top:'+y+';height:'+h+';'+w+';font-size:1px;background-color:'+color+'"></span>') 


    function Plot(x,y)

        outPlot(x,y,
    1,1
        
    if(Ox>=0 || Oy>=0)
            ShowLine(Ox,Oy,x
    -Ox,y-Oy) 
            
        Ox 
    = x 
        Oy 
    = y 


    function ShowLine(x,y,w,h)

        
    if(w<0)
        { 
            x 
    += w 
            w 
    = Math.abs(w) 
        } 
        
        
    if(h<0)
        { 
            y 
    += h 
            h 
    = Math.abs(h) 
        } 
        
        
    if(w<1) w=1 
        
    if(h<1) h=1 
        outPlot(x,y,Math.round(w),Math.round(h)) 


    function orgY(y) {
        
    return y;
        
    return maxY-
    }

    function sign(n) { 
        
    if(n>0return 1 
        
    if(n<0return -1 
        
    return n 



    function Line(x1,y1,x2,y2) { 
        x2 
    = Math.round(x2) 
        y2 
    = Math.round(y2) 
        xo 
    = x2 
        yo 
    = y2 
        y1 
    = orgY(y1) 
        y2 
    = orgY(y2) 
        
    var str = "" 
        
    var i=0 

        
    var x = x1 
        
    var y = y1 
        dx 
    = Math.abs(x2-x1) 
        dy 
    = Math.abs(y2-y1) 
        s1 
    = sign(x2-x1) 
        s2 
    = sign(y2-y1) 

        
    if(dx==0 || dy==0) { 
            ShowLine(x1,y1,x2
    -x1,y2-y1) 
            
    return 
        } 

        
    if(dx>dy)
        { 
            temp 
    = dx 
            dx 
    = dy 
            dy 
    = temp 
            key 
    = 1 
        }
    else 
            key 
    = 0 

        e 
    = 2*dy-dx 

        
    for(i=0;i<dx;i++)
        { 
            px 
    = 0 
            py 
    = 0 
            Plot(x,y) 
            
    while(e>=0)
            { 
                
    if(key==1)
                { 
                    x 
    += s1 
                    px 
    += s1 
                }
    else { 
                    y 
    += s2 
                    py 
    += s2 
                } 
                e 
    = e-2*dx 
            } 
            
            
    if(key==1
                y 
    += s2 
            
    else 
                x 
    += s1 
            
            e 
    = e+2*dy 
        } 


    function print(str) { 
        document.all.printLine.innerHTML 
    += str; 
  • 相关阅读:
    Base64的解码和编码
    [WebService]代理类中对枚举类型的序列化
    Linq中的Where与SkipWhile
    Html 5中自定义data*特性
    实用TSQL之生成当前索引数据库中的外键上
    使用Post/Redirect/Get实现Asp.net防止表单重复提交
    用SquishIt最小化Css与Javascript文件
    Asp.net MVC 3 中 Unobtrusive javascript 与Ajax
    HTML5中custom data*特性与asp.net mvc 3 表单验证
    实现Asp.net MVC中AjaxOnly特性
  • 原文地址:https://www.cnblogs.com/goodspeed/p/25876.html
Copyright © 2020-2023  润新知