zoukankan      html  css  js  c++  java
  • Hashtable

    <html>
    <head>
    <title> New Document </title>
    <meta http-equiv="content-type" content="text/html; charset=gb2312">
    <style>
     .dwStyle         { 400px;font-family:宋体; font-size:12px; border:solid 1 #D3D3D3; border-1 0 1 1;}
     .dwStyle div     { 100%; height:400px; overflow:auto; border-right: 1px solid #D3D3D3; border-bottom: 1px solid #E8F4FF;  }
     .dwTHStyle       { table-layout:fixed; border:0; }
     .dwTHStyle    tr { height:20px; background-color:#F5F5F5; }
     .dwTHStyle    th { 80px;  border:solid 1 #D3D3D3; border-0 1 1 0; }
     .dwTHStyle  span { 100%; height:100%; font-size:14px; font-weight:500; color:Darkblue; text-align:center; padding-top:3; cursor:hand; }
     .dwTBStyle      { table-layout:fixed; border:0; }
     .dwTBStyle   tr { height:20px; background-color:white;}
     .dwTBStyle   th { background-color:#F5F5F5; 40px}
     .dwTBStyle   td { 80px; border:solid 1 red; border-color:white #ADD8E6 #ADD8E6 white;  }
     .dwTBStyle    div{ 100%; height:100%; overflow:hidden;text-overflow:clip; border-0; }
    </style>
    <script language="JavaScript">
    /********************************************************
     *  功能:Hashtable          *

     *  使用方法: var yourVariable = new Hashtable();  *
     *  实现了如下方法:          *
     *  ◆put(key,value)          *
     *  ◆get(key,[defaultValue]),其中defaultValue参数可选 *
     *   无defaultValue,get没有匹配时返回null    *
     * ◆remove(key),成功返回ture,失败返回false(要求IE5.5) *
     * ◆clear()           *
     * ◆containsKey(key),包含返回ture,否则返回false   *
     * ◆containsValue(value),包含返回ture,否则返回false  *
     * ◆size(),返回hashtable中数据总数                 *
     ********************************************************/ 
    function Hashtable()
    {
     this.hash = new ActiveXObject("Scripting.Dictionary");
     this.put = put;
     this.get = get;
     this.keys = keys;
     this.values = values;
     this.clear = clear;
     this.remove = remove;
     this.containsKey = containsKey;
     this.containsValue = containsValue;
     this.size = size;
     function put(key,value) { if (this.hash.Exists(key)) this.remove(key); this.hash.Add(key,value); }
     function get(key) { if(typeof( this.hash.Item(key)) != 'undefined') return this.hash.Item(key); return (arguments.length==2) ? arguments[1] : null; }
     function remove(key) { if (this.hash.Exists(key)) this.hash.Remove(key); }
     function keys() { return (new VBArray(this.hash.Keys())).toArray(); }
     function values() { return (new VBArray(this.hash.Items())).toArray(); }
     function clear() { this.hash.RemoveAll(); }
     function containsKey(key) { return (this.hash.Exists(key)) ? true : false; }
     function containsValue(value) { var values = (new VBArray(this.hash.Items())).toArray(); for (var i=0; i<values.length; i++) if(values[i] == value) return true; return false; }
     function size() { return this.hash.Count; }
    }
    </script>
    </head>
    <body>
    <!----------------------------------------------------------------------------------------------------->
    <table cellPadding=0 cellSpacing=0 class=dwStyle   onselectstart='return false'>
    <tr><td>
    <!----------------------------------------------------------------------------------------------------->
    <table cellPadding=0 cellSpacing=0 class=dwTHStyle>
    <thead><tr>
      <th style="40"><span></span></th>
      <script language=vbscript>
       function getLetter(i)
        getLetter=Chr(i)
       end function
      </script>
      <script language="JavaScript">
      <!--
       var width = '';
    //   for(var i=65; i<91; i++) {
       for(var i=65; i<70; i++){
        //if(i==90) width = ' style="100%"';
        document.write("<th" + width + "><span>" + getLetter(i) + "</span></th>");
       }
      //-->
      </script>
     </tr>
     </thead>
    </table>
    <!----------------------------------------------------------------------------------------------------->
    </td></tr><tr><td><div>
    <!----------------------------------------------------------------------------------------------------->
    <table id=t1 cellPadding=0 cellSpacing=0 class=dwTHStyle>
     <tbody  class= dwTBStyle ondrag="return false"  onmousedown='down()' onmouseover='move()' onmouseup='up()' onselectstart='return false' >
     <script language="JavaScript">
     <!--
    //  for(var i=1; i<60; i++){
      for(var i=1; i<10; i++){
       document.write("<tr><th><span>" + i + "</span></th>");
    //   for(var j=0; j<26; j++){
       for(var j=0; j<5; j++){
        document.write("<td><div></div></td>");
       }
       document.write("</tr>");
      }
     //-->
     </script>
     </tbody>
    </table>
    <!----------------------------------------------------------------------------------------------------->
    </div></td></tr></table>
    <!----------------------------------------------------------------------------------------------------->
    <button onclick='selected_area.drawNet()'>网</button>
    <button onclick='selected_area.drawRect()'>框</button>
    <button onclick='selected_area.drawTopLine()'>上</button>
    <button onclick='selected_area.drawBottomLine()'>下</button>
    <button onclick='selected_area.drawLeftLine()'>左</button>
    <button onclick='selected_area.drawRightLine()'>右</button>
    <button onclick='selected_area.drawNone()'>无</button>
    <button onclick='selected_area.unitTD()'>合并</button>
    <div style="position:absolute; left:100; top:300" id= ohoh></div>
    <div style="position:absolute; left:300; top:300" id= ohoh1></div>
    <div style="position:absolute; left:500; top:400" id= ohoh2></div>
    <div style="position:absolute; left:500; top:430" id= ohoh3></div>
    <div style="position:absolute; left:50; top:450" id= ohoh4></div>
    <div style="position:absolute; left:500; top:450" id= ohoh5></div>
    <input type=button onclick=window.location="view-source:"+document.location.href>
    <div id = hehe style="position:absolute;background-color:yellow; FILTER: Alpha( style=0,opacity=25);display:none;font-size:9pt" onmousemove='move()' onmousedown='down()' onmouseup='up()' onselectstart='return false'></div>
    <script language="JavaScript">
    <!--
     var tbs = new Hashtable();
     var unit_cells = new Hashtable();
     var unit_objs = new Hashtable();
     var n = 0;
     var tbObj = t1;
     Array.prototype.digitalsort=function(){this.sort(new Function("a","b","return digitalcomp(a,b,'1')"));}
    function coordinates(x,y,sx,sy,ex,ey)
    {
     this.x = x;
     this.y = y;
     this.sx = sx;
     this.sy = sy;
     this.ex = ex;
     this.ey = ey;
    }
    //----------------------------------------------------------------------------
    function cal_coordinates(){
     
     var first_cell = tbObj.rows[0].cells[1];
     var sx = fnGetPosition(first_cell,'Left');
     var sy = fnGetPosition(first_cell,'Top');
     var width = first_cell.offsetWidth;
     var height= first_cell.offsetHeight;
     var height0= 0;
     
     tbs.put('width', width);
     tbs.put('height', height);
     for(var i=0; i<tbObj.rows.length; i++){
      var width0 = 0;
      for(var j=1; j<tbObj.rows[0].cells.length; j++){
       var key = i + '-' + j;
       var col = new coordinates(0,0,0,0,0,0);
       col.x = i;
       col.y = j;
       col.sx = sx + width0;
       col.sy = sy + height0;
       col.ex = col.sx + width;
       col.ey = col.sy + height;
    //  ohoh.innerHTML = ohoh.innerHTML + col.x + ',' + col.y + ',' + col.sx + ',' + col.sy + ',' + col.ex + ',' + col.ey + '<br>';
       width0 += width;
       
       tbs.put(key, col);
      }
      height0 += height;
     }
    }
    function cal_time()
    {
       var d, s = "Time: ";
       var c = ":";
       d = new Date();
       s += d.getHours() + c;
       s += d.getMinutes() + c;
       s += d.getSeconds() + c;
       s += d.getMilliseconds();
       return(s);
    }
    ohoh.innerText = cal_time();
    cal_coordinates();
    ohoh1.innerText = cal_time();
    //alert(tbs.size());
    //----------------------------------------------------------------------------
    function selectedArea(sObj, eObj, lineColor)
    {
     this.sObj = sObj;
     this.eObj = eObj;
     this.lineColor = lineColor;
     
     var scol = 0;
     var srow = 0;
     var ecol = 0;
     var erow = 0;
     var startObj = null;
     this.show = show;
     this.drawNet = drawNet;
     this.drawRect = drawRect;
     this.drawTopLine = drawTopLine;
     this.drawBottomLine = drawBottomLine;
     this.drawLeftLine = drawLeftLine;
     this.drawRightLine = drawRightLine;
     this.drawNone = drawNone;
     this.unitTD = unitTD;
     function xy(row,col){
      this.row = row;
      this.col = col;
     }
     function unitTD()
     {
      var delObjs = new Array();
      var selObjs = new Array();
      var n=0;
      var m=0;
      var unit_obj_name = srow+'.'+scol+'-'+erow+'.'+ecol;
    //alert('srow='+ srow + ',scol=' + scol + 'erow='+ erow + ',ecol=' + ecol);
      for(var i = srow; i<=erow; i++)
      for(var j = scol; j<=ecol; j++) {
       var key = i + '-' + j;
       if(unit_cells.containsKey(key)){
        var value = unit_cells.get(key);
        var x_y = unit_objs.get(value);
        if(x_y!=null) {
         var rows = new Array();
         var cols = new Array();
         for(var k=0; k<x_y.length; k++){
          rows[k] = x_y[k].row;
          cols[k] = x_y[k].col;
         }
         rows.digitalsort(); 
         cols.digitalsort();
         delObjs[n++] = tbObj.rows[rows[0]].cells[cols[0]];
         unit_objs.remove(value);
        }
       }else{
        delObjs[n++] = tbObj.rows[i].cells[j];
       }
      
       var x_y = new xy(i,j);
       //alert(x_y.row + '|' +  x_y.col);
       selObjs[m++] = x_y; 
    //ohoh5.innerHTML = ohoh5.innerHTML + i+'-'+j + '<br>';
       unit_cells.put(i+'-'+j , unit_obj_name);
      }
    //alert(2);
      unit_objs.put(unit_obj_name,selObjs);
    //alert(3);
      for(var i=1; i<delObjs.length; i++){
       delObjs[i].removeNode(1);
      }
      ohoh5.innerText = 'srow=' + srow + ',scol=' + scol + '|erow=' + erow + ',ecol=' + ecol;
      delObjs[0].colSpan = ecol-scol + 1;
      delObjs[0].rowSpan = erow-srow + 1;
     }
     
     function show()
     {
    //  if(this.sObj == null || this.eObj == null) return;
      var n = 0;
      var m = 0;
      var rows = new Array();
      var cols = new Array();
      function cal_row_col(){ 
       rows.digitalsort(); 
       cols.digitalsort(); 
       srow = rows[0]; 
       erow = rows[rows.length-1]; 
       scol = cols[0]; 
       ecol = cols[cols.length-1]; 
      }
      function cal_contain_cell(key){
       if(!unit_cells.containsKey(key)) return;
       var value = unit_cells.get(key);
       var x_y = unit_objs.get(value);
       for(var k=0; k<x_y.length; k++){
        rows[n++] = x_y[k].row;
        cols[m++] = x_y[k].col; 
       }
      }
      function cal_contain(){
       if(unit_cells.size()!=0){
        for(var i=scol; i<=ecol; i++) {
         var key1 = srow + '-' + i;
         var key2 = erow + '-' + i;
         cal_contain_cell(key1);
         cal_contain_cell(key2);
        }
        for(var i=srow; i<=erow; i++) {
         var key1 = i + '-' + scol;
         var key2 = i + '-' + ecol;
         cal_contain_cell(key1);
         cal_contain_cell(key2);
        }
        cal_row_col();
       }
      }
      rows[n++] = this.sObj.x;
      rows[n++] = this.eObj.x;
      cols[m++] = this.sObj.y;
      cols[m++] = this.eObj.y;
      cal_row_col();
    //ohoh.innerText= 'ohoh:' + srow + ',' + scol + ',' + erow + ',' + ecol;
      cal_contain();
      cal_contain();
    //ohoh1.innerText= 'ohoh1:' + srow + ',' + scol + ',' + erow + ',' + ecol;
      startObj = tbs.get(srow + '-' + scol);
      var width = 0;
      var height = 0;
      for(var i=scol; i<=ecol; i++) width += tbs.get('width');
      for(var i=srow; i<=erow; i++) height += tbs.get('height');
      hehe.style.left = startObj.sx;
      hehe.style.top = startObj.sy;
      hehe.style.width = width;
      hehe.style.height = height;
      hehe.style.display = 'block';
     }
     function drawNet()//网
     {
      for(var i = srow; i<=erow; i++)
      for(var j = scol; j<=ecol; j++){
       tbObj.rows[i].cells[j].style.borderColor = 'white ' + this.lineColor + ' ' + this.lineColor + ' white';
      }
      this.drawTopLine();
      this.drawLeftLine();
     }
     function drawNone()//无
     {
      for(var i = srow; i<=erow; i++)
      for(var j = scol; j<=ecol; j++){
       tbObj.rows[i].cells[j].style.borderColor = 'white #ADD8E6 #ADD8E6 white'; 
      }
      if( srow-1 > 0){
       for(var j = scol; j<=ecol; j++) tbObj.rows[srow-1].cells[j].style.borderBottomColor = '#ADD8E6';
      }
      if( scol-1 > 0){
       for(var j = srow; j<=erow; j++) tbObj.rows[j].cells[scol-1].style.borderRightColor = '#ADD8E6';
      }
     }
     function drawRect() //框
     {
      this.drawTopLine();
      this.drawBottomLine();
      this.drawLeftLine();
      this.drawRightLine();
     }
     function drawTopLine() //上边
     {
      if( srow-1 > 0){
       for(var j = scol; j<=ecol; j++) tbObj.rows[srow-1].cells[j].style.borderBottomColor = this.lineColor;
      }
     }
     function drawBottomLine() //下边
     {
      for(var i = scol; i<=ecol; i++){
       tbObj.rows[erow].cells[i].style.borderBottomColor = this.lineColor;
      }
     }
     function drawLeftLine() //左边
     {
      if( scol-1 > 0){
       for(var j = srow; j<=erow; j++) tbObj.rows[j].cells[scol-1].style.borderRightColor = this.lineColor;
      }
     }
     function drawRightLine() //右边
     {
      for(var i = srow; i<=erow; i++){
       tbObj.rows[i].cells[ecol].style.borderRightColor = this.lineColor;
      }
     }
    }
    var selected_area = new selectedArea(null,null,'blue');
    function aa()
    {
     a1.colSpan = 2;
     a2.removeNode(1);
     a3.rowSpan = 2;
     a7.removeNode(1);
    }
    function getParentNodeByTagName(node,tagName)
    {
     while(node.tagName != tagName) node = node.parentElement;
     return node;
    }
    function down()
    {
     n=1;
     getFocusObj(true);
     selected_area.show();
    // tbObj.setCapture();
    //alert(tbs.size());
    }
    function up()
    {
     n=0;
    // tbObj.releaseCapture();
    }
    function move()
    {
     if(n!=1) return;
     getFocusObj(false);
     selected_area.show();
    }
    function getFocusObj(kind){
     var x = event.clientX + document.body.scrollLeft;
     var y = event.clientY + document.body.scrollTop;
     var key = null;
     var col = null;
     for(var i=0; i<tbObj.rows.length; i++)
     for(var j=1; j<tbObj.rows[0].cells.length; j++){
      key = i + '-' + j;
      col = tbs.get(key);
      if(x > col.sx & y > col.sy && x < col.ex & y < col.ey){
       if(kind) selected_area.sObj = col;
       selected_area.eObj = col;
       break;
      }//end if
     }
    }
    function digitalcomp(x,y,flag)
    {
     if(flag!=1) return Number(y)-Number(x);
     else return Number(x)-Number(y);
    }
    function fnGetPosition(obj,direction)
    {
        var objPosition=0;
        while (obj !=null){
          objPosition+=obj["offset"+direction];
          obj=obj.offsetParent;
        }
        return objPosition;
    }
    //-->
    </script>
    </body>
    </html>
  • 相关阅读:
    高斯消元
    丑数
    扩展欧几里得算法与线性同余方程
    数论-求逆元
    数论-快速幂-快速乘
    宋逸轩长难句 2
    宋逸轩长难句 1
    c语言 文件
    c语言程序结构
    c语言结构类型
  • 原文地址:https://www.cnblogs.com/zqmingok/p/1709782.html
Copyright © 2011-2022 走看看