• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    用js實現table單元格高寬調整,兼容合并單元格(兼容IE6、7、8、FF)實例_javascript技巧

    來源:懂視網 責編:小采 時間:2020-11-27 21:10:22
    文檔

    用js實現table單元格高寬調整,兼容合并單元格(兼容IE6、7、8、FF)實例_javascript技巧

    用js實現table單元格高寬調整,兼容合并單元格(兼容IE6、7、8、FF)實例_javascript技巧:先上效果圖: CSS: 代碼如下:body{margin:0px;padding:0px;-moz-user-select:none;cursor:default;} .tabEditDiv{position:absolute;width:15px;height:15px;cursor:pointer;}.seltab{position:abso
    推薦度:
    導讀用js實現table單元格高寬調整,兼容合并單元格(兼容IE6、7、8、FF)實例_javascript技巧:先上效果圖: CSS: 代碼如下:body{margin:0px;padding:0px;-moz-user-select:none;cursor:default;} .tabEditDiv{position:absolute;width:15px;height:15px;cursor:pointer;}.seltab{position:abso

    先上效果圖:

    CSS:
    代碼如下:
    body{margin:0px;padding:0px;-moz-user-select:none;cursor:default;}

    .tabEditDiv{position:absolute;width:15px;height:15px;cursor:pointer;}
    .seltab{position:absolute;width:15px;height:15px;cursor:pointer;background:url(images/seltab.gif) no-repeat;}
    .splitx{overflow:hidden;position:absolute;height:3px;cursor:row-resize;background:red !important;filter:Alpha(opacity=10);-moz-opacity:0.1;opacity: 0.1; }
    .splity{overflow:hidden;position:absolute;width:3px;cursor:col-resize;background:red !important;filter:Alpha(opacity=10);-moz-opacity:0.1;opacity: 0.1;}
    #tabletitle{font-weight:bold;font-size:18px;height:30px;width:800px;margin:0 auto;text-align:center;font-family:宋體;line-height:30px;}
    #tabletitle input{width:100%;border:0px;height:28px;line-height:30px;text-align:center;font-weight:bold;font-size:18px;font-family:宋體;}
    .finelinetable{border-right:1px solid #000;border-top:1px solid #000;border-collapse:collapse;font-size:13px;width:800px;margin:0 auto;}
    .finelinetable td{border-left:1px solid #000;border-bottom:1px solid #000;height:25px;}

    HTML:
    代碼如下:

    表格標題


































































    1
    2 3 4 5 6 7
    8 9 10 11 12 13
    14 15 16 17 18


    JS:
    代碼如下:
    //注釋:獲取對象.示例:$("objectId") 等同于 document.getElementById("objectId")
    if (typeof $ != "function") { var $ = function (ids) { return document.getElementById(ids) }; }
    //注釋:獲取坐標,parentNode最后節點.示例:absPos(object).x
    function absPos(_node, parentNode) { var x = y = 0; var node = _node; do { if (parentNode && node == parentNode) { break; } x += node.offsetLeft; y += node.offsetTop; } while (node = node.offsetParent); node = _node; return { 'x': x, 'y': y }; }
    function addEvent(object, event, func) { if (object.addEventListener) { /* W3C方法(DOM方法)下面語句中的false意思是用于冒泡階段,若是true則是用于捕獲階段(IE不支持捕獲),所以這里用false是一方面的原因是為了統一 */object.addEventListener(event, func, false); return true; } else if (object.attachEvent) { /* MSIE方法(IE方法) */object['e' + event + func] = func; object[event + func] = function () { object['e' + event + func](window.event); }; object.attachEvent('on' + event, object[event + func]); return true; } /*如兩種方法都不具備則返回false */return false; }
    //注釋:判斷是否是對象內子節點觸發的onmouseover和onmouseout.示例:e = e || event;if (isMouseLeaveOrEnter(e, obj)) {}
    function isMouseLeaveOrEnter(e, handler) { if (e.type != 'mouseout' && e.type != 'mouseover') return false; var reltg = e.relatedTarget ? e.relatedTarget : e.type == 'mouseout' ? e.toElement : e.fromElement; while (reltg && reltg != handler) reltg = reltg.parentNode; return (reltg != handler); }

    var table = $("mainTable");
    var tabEditDiv; //覆蓋在table上的DIV
    var cellHide = [];//補充的rowspan,cellspan的格子
    var moveMode = "";//鼠標移動模式
    var moveArgs = []; //移動模式參數

    document.onselectstart = function(){return false;};
    addEvent(window,"resize",function(){loadTable();});

    $("tabletitle").ondblclick = function(){
    if(this.getElementsByTagName("input").length > 0){return;}
    this.innerHTML = "";
    var input = this.getElementsByTagName("input")[0];
    var _this = this;
    input.focus();
    input.onblur = function(){_this.innerHTML = this.value;}
    input.onkeydown = function (e) { var key = window.event ? window.event.keyCode : e.which; if (key == 13) this.blur(); };
    }

    function loadTable(){
    var tabPos = absPos(table);
    if(!tabEditDiv){
    tabEditDiv = document.createElement("div");
    document.body.appendChild(tabEditDiv);
    }
    tabEditDiv.style.cssText = "left:" + (tabPos.x - 15) + "px;top:" + (tabPos.y - 15) + "px;";
    tabEditDiv.className = "tabEditDiv";

    //全選Table按鈕
    if(!seltab){
    var seltab = document.createElement("div");
    seltab.style.cssText = "width:15px;height:15px;left:" + (tabPos.x - 15) + "px;top:" + (tabPos.y - 15) + "px;";
    seltab.className = "seltab";
    seltab.onclick = function(){
    if(table.getAttribute("selected") == "1"){
    table.removeAttribute("selected");
    table.style.background = "";
    this.style.width = "15px";
    this.style.height = "15px";
    }else{
    table.setAttribute("selected","1");
    table.style.background = "#B6CAEB";
    this.style.width = (table.clientWidth + 15) + "px";
    this.style.height = (table.clientHeight + 15) + "px";
    }
    }
    document.body.appendChild(seltab);
    }
    loadTableEdit();
    } loadTable();

    function loadTableEdit(){ //加載可調整寬度及高度的div
    var tabPos = absPos(table);
    tabEditDiv.innerHTML = "";
    var cellcount = 0;
    var isadd = cellHide.length == 0;
    for(var i=0;i for(var j=0;j var pos = absPos(table.rows[i].cells[j],table);
    if(!$("splitx_" + (pos.y + table.rows[i].cells[j].clientHeight))){ //加載可調整高度的div
    var split = document.createElement("div");
    split.id = "splitx_" + (pos.y + table.rows[i].cells[j].clientHeight);
    split.className = "splitx";
    split.style.cssText = "width:" + table.clientWidth + "px;left:15px;top:" + (pos.y + table.rows[i].cells[j].clientHeight - 1 + 15) + "px";
    split.onmousedown = function(){
    var index = this.getAttribute("index");
    if(index == null){ index = 0; var divs = tabEditDiv.getElementsByTagName("div"); var left = parseInt(this.id.split("_")[1]); for(var k=0;k moveMode = "cellHeight";
    moveArgs[moveArgs.length] = index;
    }
    tabEditDiv.appendChild(split);
    }
    if(j > 0){ //加載可調整寬度的div
    if(!$("splity_" + pos.x)){
    var split = document.createElement("div");
    split.id = "splity_" + pos.x;
    split.className = "splity";
    split.style.cssText = "height:" + table.clientHeight + "px;top:15px;left:" + (pos.x - 2 + 15) + "px";
    split.onmousedown = function(){
    var index = this.getAttribute("index");
    if(index == null){ index = 0; var divs = tabEditDiv.getElementsByTagName("div"); var left = parseInt(this.id.split("_")[1]); for(var k=0;k moveMode = "cellWidth";
    moveArgs[moveArgs.length] = index;
    }
    tabEditDiv.appendChild(split);
    }
    }
    if(isadd){
    loadHide();
    }
    table.rows[i].cells[j].onmousedown = function(){
    //alert("x");
    }
    }
    }
    }

    function loadHide(){
    cellHide = [];
    var tempHide = [];
    for(var i=0;i for(var j=0;j for(var k=1;k cellHide[cellHide.length] = [i+k,j];
    tempHide[tempHide.length] = [i+k,j];
    }
    }
    }
    for(var i=0;i for(var j=0;j for(var k=1;k var yc = 0;
    for(var l=0;l if(tempHide[l][0]==i&&tempHide[l][1] }
    for(var l=0;l if(table.rows[i].cells[l].colSpan > 1){yc+=table.rows[i].cells[l].colSpan-1;}
    }
    cellHide[cellHide.length] = [i,j+k+yc];
    }
    }
    }
    }

    addEvent(document,"mousemove",function(e){
    e = e || window.event;
    if(moveMode == "cellWidth"){ //調整寬度

    var temp = moveArgs[0];
    var test = "";
    for(var i=0;i var index = temp;
    for(var j=0;j if(i==cellHide[j][0] && temp>=cellHide[j][1]){index--;}
    }
    if(!table.rows[i].cells[index] || index < 0 || table.rows[i].cells[index].colSpan > 1){continue;}
    if(e.clientX > absPos(table.rows[i].cells[index]).x)
    table.rows[i].cells[index].style.width = e.clientX - absPos(table.rows[i].cells[index]).x + "px";
    }
    loadTableEdit();
    }else if(moveMode == "cellHeight"){ //調整高度
    var index = moveArgs[0];
    for(var i=0;i if(table.rows[index].cells[i].rowSpan > 1){continue;}
    if(e.clientY > absPos(table.rows[index].cells[i]).y)
    table.rows[index].cells[i].style.height = e.clientY - absPos(table.rows[index].cells[i]).y + "px";
    }
    loadTableEdit();
    }
    });
    addEvent(document,"mouseup",function(e){
    moveMode = ""; moveArgs = [];
    });
    addEvent(document,"mouseout",function(e){
    e = e || event;
    if (!isMouseLeaveOrEnter(e, this)) { return; }
    moveMode = ""; moveArgs = [];
    });

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    用js實現table單元格高寬調整,兼容合并單元格(兼容IE6、7、8、FF)實例_javascript技巧

    用js實現table單元格高寬調整,兼容合并單元格(兼容IE6、7、8、FF)實例_javascript技巧:先上效果圖: CSS: 代碼如下:body{margin:0px;padding:0px;-moz-user-select:none;cursor:default;} .tabEditDiv{position:absolute;width:15px;height:15px;cursor:pointer;}.seltab{position:abso
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 欧美精品福利在线视频| 亚洲成人国产精品| 午夜福利麻豆国产精品| 国产午夜精品视频| 亚洲精品字幕在线观看| 国产线视频精品免费观看视频| 国产成人精品AA毛片| 亚洲精品天堂成人片?V在线播放| 国产成人精品免高潮在线观看| 69SEX久久精品国产麻豆| 亚洲精品国偷自产在线| 久久久久久青草大香综合精品| 在线精品视频播放| 国产精品视频网| 国产精品igao视频网| 无码精品视频一区二区三区| 欧洲精品码一区二区三区免费看| www亚洲欲色成人久久精品| www.亚洲精品.com| 国产成人无码久久久精品一| 日韩精品无码免费一区二区三区 | 日韩av无码久久精品免费| 久久精品国产国产精品四凭| 国产一区麻豆剧传媒果冻精品| 97视频在线精品国自产拍| 精品亚洲综合在线第一区| 97久久久精品综合88久久| 92国产精品午夜福利| 91精品一区国产高清在线| 国产精品1区2区3区在线播放| 国产精品免费观看调教网| 国语自产精品视频在线区| 国产精品综合色区在线观看| 国产亚洲精品美女久久久| …久久精品99久久香蕉国产| 99香蕉国产精品偷在线观看| 91精品国产自产在线观看永久| 99国产精品久久| 久久久久国产精品| 成人午夜精品久久久久久久小说| 99精品久久久久久久婷婷|