찾다
웹 프론트엔드JS 튜토리얼js를 사용하여 표 셀 높이 및 너비 조정, 병합된 셀과 호환(IE6, 7, 8, FF와 호환)

先上效果图:

js를 사용하여 표 셀 높이 및 너비 조정, 병합된 셀과 호환(IE6, 7, 8, FF와 호환)

CSS:

复제대码 代码如下:

body{margin:0px;padding :0px;-moz-user-select:none;cursor:default;}

.tabEditDiv{위치:절대;너비:15px;높이:15px;커서:포인터;}
.seltab{위치:절대;폭:15px;높이:15px;커서:포인터;배경:url(이미지 /seltab.gif) 반복 없음;}
.splitx{overflow:hidden;위치:absolute;height:3px;cursor:row-resize;배경:red !important;filter:Alpha(opacity=10);- moz-불투명도:0.1;불투명도: 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 입력{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:

复aze代码 代码如下:

//참고: 객체를 가져옵니다. 예: $("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.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] = object[event func] = function () { object['e' event func](window.event) }; object.attachEvent('on' event, object[event func]) } /*두 가지 메소드를 모두 사용할 수 없으면 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.관련Target ? e.type == 'mouseout' ? e.toElement : e.fromElement; while (reltg && reltg ! = 핸들러) reltg = reltg.parentNode; return (reltg != 핸들러) }

var table = $("mainTable");
var tabEditDiv; //테이블을 덮는 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.keyCode : e.which; if (key == 13) this.blur() };
}

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

//모든 테이블 버튼 선택
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";
이 .style.height = "15px ";
                                else{
                table.setAttribute("selected","1");
                table.style.Background = "#B6CAEB";
               this.style.width = (table.clientWidth 15) "px" >
     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 = "너비:" table.clientWidth "px;left:15px;top:" (pos.y table.rows[i].cells[j].clientHeight - 1 15) "px";
                분할.onmousedown = function(){
                    var index = this.getAttribute("index");
                    if(index == null){ index = 0; var divs = tabEditDiv.getElementsByTagName("div"); var left = parsInt(this.id.split("_")[1]); for(var k=0;k                    moveMode = "cellHeight";
                    moveArgs[moveArgs.length] = index;
                 }
                 tabEditDiv.appendChild(split);
             }
             if(j > 0){ //加载可调整宽島的div
               if(!$("split_" pos.x)){
                    var 분할 = 문서. createElement("div") ;
                   분할.id = "sply_" pos.x;
                  분할.className = "sply";
                  분할.style.cssText = "높이:" 높이 "px;상단:15px;왼쪽 :" (pos.x - 2 15) "px";
                    Split.onmousedown = function(){
                     var index = this.getAttribute("index");
                        if(색인 == null) { 인덱스 = 0; var divs = tabEditDiv.getElementsByTagName("div"); var left = parsInt(this.id.split("_")[1]); for(var k=0;k                       moveMode = "cellWidth";
                      moveArgs[moveArgs.length] = index;
                     }
>    loadHide();
             }
             table.rows[i].cells[j]. onmousedown = function(){
                //alert("x");
             }
        }
     }
 }

함수 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&&temp숨기기 [l][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 1){계속 ;}
             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){계속;}
             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 = [];
 });


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
JavaScript 데이터 유형 : 브라우저와 Nodejs 사이에 차이가 있습니까?JavaScript 데이터 유형 : 브라우저와 Nodejs 사이에 차이가 있습니까?May 14, 2025 am 12:15 AM

JavaScript 코어 데이터 유형은 브라우저 및 Node.js에서 일관되지만 추가 유형과 다르게 처리됩니다. 1) 글로벌 객체는 브라우저의 창이고 node.js의 글로벌입니다. 2) 이진 데이터를 처리하는 데 사용되는 Node.js의 고유 버퍼 객체. 3) 성능 및 시간 처리에는 차이가 있으며 환경에 따라 코드를 조정해야합니다.

JavaScript 댓글 : / / * * /사용 안내서JavaScript 댓글 : / / * * /사용 안내서May 13, 2025 pm 03:49 PM

javaScriptUSTWOTYPESOFSOFCOMMENTS : 단일 라인 (//) 및 multi-line (//)

Python vs. JavaScript : 개발자를위한 비교 분석Python vs. JavaScript : 개발자를위한 비교 분석May 09, 2025 am 12:22 AM

Python과 JavaScript의 주요 차이점은 유형 시스템 및 응용 프로그램 시나리오입니다. 1. Python은 과학 컴퓨팅 및 데이터 분석에 적합한 동적 유형을 사용합니다. 2. JavaScript는 약한 유형을 채택하며 프론트 엔드 및 풀 스택 개발에 널리 사용됩니다. 두 사람은 비동기 프로그래밍 및 성능 최적화에서 고유 한 장점을 가지고 있으며 선택할 때 프로젝트 요구 사항에 따라 결정해야합니다.

Python vs. JavaScript : 작업에 적합한 도구 선택Python vs. JavaScript : 작업에 적합한 도구 선택May 08, 2025 am 12:10 AM

Python 또는 JavaScript를 선택할지 여부는 프로젝트 유형에 따라 다릅니다. 1) 데이터 과학 및 자동화 작업을 위해 Python을 선택하십시오. 2) 프론트 엔드 및 풀 스택 개발을 위해 JavaScript를 선택하십시오. Python은 데이터 처리 및 자동화 분야에서 강력한 라이브러리에 선호되는 반면 JavaScript는 웹 상호 작용 및 전체 스택 개발의 장점에 없어서는 안될 필수입니다.

파이썬 및 자바 스크립트 : 각각의 강점을 이해합니다파이썬 및 자바 스크립트 : 각각의 강점을 이해합니다May 06, 2025 am 12:15 AM

파이썬과 자바 스크립트는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구와 개인 선호도에 따라 다릅니다. 1. Python은 간결한 구문으로 데이터 과학 및 백엔드 개발에 적합하지만 실행 속도가 느립니다. 2. JavaScript는 프론트 엔드 개발의 모든 곳에 있으며 강력한 비동기 프로그래밍 기능을 가지고 있습니다. node.js는 풀 스택 개발에 적합하지만 구문은 복잡하고 오류가 발생할 수 있습니다.

JavaScript의 핵심 : C 또는 C에 구축 되었습니까?JavaScript의 핵심 : C 또는 C에 구축 되었습니까?May 05, 2025 am 12:07 AM

javaScriptisNotBuiltoncorc; it'SangretedLanguageThatrunsonOngineStenWrittenInc .1) javaScriptWasDesignEdasAlightweight, 해석 hanguageforwebbrowsers.2) Endinesevolvedfromsimpleplemporectreterstoccilpilers, 전기적으로 개선된다.

JavaScript 응용 프로그램 : 프론트 엔드에서 백엔드까지JavaScript 응용 프로그램 : 프론트 엔드에서 백엔드까지May 04, 2025 am 12:12 AM

JavaScript는 프론트 엔드 및 백엔드 개발에 사용할 수 있습니다. 프론트 엔드는 DOM 작업을 통해 사용자 경험을 향상시키고 백엔드는 Node.js를 통해 서버 작업을 처리합니다. 1. 프론트 엔드 예 : 웹 페이지 텍스트의 내용을 변경하십시오. 2. 백엔드 예제 : node.js 서버를 만듭니다.

Python vs. JavaScript : 어떤 언어를 배워야합니까?Python vs. JavaScript : 어떤 언어를 배워야합니까?May 03, 2025 am 12:10 AM

Python 또는 JavaScript는 경력 개발, 학습 곡선 및 생태계를 기반으로해야합니다. 1) 경력 개발 : Python은 데이터 과학 및 백엔드 개발에 적합한 반면 JavaScript는 프론트 엔드 및 풀 스택 개발에 적합합니다. 2) 학습 곡선 : Python 구문은 간결하며 초보자에게 적합합니다. JavaScript Syntax는 유연합니다. 3) 생태계 : Python에는 풍부한 과학 컴퓨팅 라이브러리가 있으며 JavaScript는 강력한 프론트 엔드 프레임 워크를 가지고 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음