면접 때 이런 문제에 부딪혔던 기억이 납니다. 양식이 있고 입력 상자가 4개 있고 병합 버튼이 있습니다. 입력 상자는 어느 행에서 어느 행으로, 어느 열에서 어느 열로 이렇게 생겼습니다. . 을 클릭한 다음 버튼을 클릭하여 병합합니다. 학교를 졸업하고 JS에 대해 조금밖에 몰랐지만 전혀 할 수가 없었어요! 지금 생각해보면 이 질문은 사실 기본기가 탄탄한지를 테스트하는 질문인 것 같아요! 관심이 있으시면 직접 해보고 할 수 있는지 테스트해 보세요. 질문의 스크린샷:
지금 이 문제를 수행하는 것은 간단해 보이지만 여전히 오랜 시간이 걸렸습니다. 어쩌면 내 생각이 틀렸을 수도 있습니다. 가장 중요한 것은 js를 사용하여 html을 조작하는 것입니다. 이제 행 추가, 행 삭제, 열 추가 및 열 삭제를 구현했습니다. 그러나 주로 테이블이 엉망이 되기 때문에 셀 병합을 완전히 구현할 수 없습니다. 이제 이 질문을 게시하세요. 관심 있는 동료들이 시간이 있을 때 공부하고 해낼 수 있는지 확인할 수 있습니다! 주로 문제는 셀을 병합하는 것입니다! 셀 병합 문제를 파악하는 데 도움을 줄 수도 있습니다.
내가 직접 구현한 코드의 일부:
html 부분은 다음과 같습니다
다음과 같이 코드 코드를 복사합니다.
<body onLoad="init();">
<테이블 id="테이블" 정렬="중앙">
<tbody id="newbody"></tbody>
</table>
<div>
<테이블 정렬="가운데">
<tr><td align="center"><input type="button" id="addRow" name="addRow" onClick="addRow();" value="행 추가"/></td>
<td align="center"><input type="button" id="delRow" name="delRow" onClick="removeRow();" value="행 제거"/></td>
</tr>
<tr><td align="center"><input type="button" id="delCell" name="delCell" onClick="removeCell();" value="열 제거"/></td>
<td align="center"><input type="button" id="addCell" name="addCell" onClick=" addCell();" value="열 추가"/></td>
</tr>
<tr><td align="center" colspan="2"><input type="button" id="addRows" name="addRows" onClick="addRow_withInsert();" value="행 추가"/>< /td></tr>
</table>
</div>
<div>
<테이블 정렬="가운데">
<tr><td><input type="text" id="beginRow" name="beginRow" value=""/> 줄에서 <input type="text" name="endRow" id="endRow" 값까지 =""/> 행</td><td rowspan="2" id="test"><input type="button" name="hebing" id="hebing" value="병합" onClick="rebulid();"/> </td></tr>
<tr><td><input type="text" name="beginCol" id="beginCol" value=""/> 열에서 <input type="text" name="endCol" id="endCol" 값까지 =""/> 열</td></tr>
</table>
</div>
</body>
AppendChild를 사용하여 테이블 생성
다음과 같이 코드 코드를 복사합니다.
함수 초기화(){
_table=document.getElementById("테이블");
_table.border="1px";
_table.width="800px";
for(var i=1;i<10;i++){
var row=document.createElement("tr");
행.id=i;
for(var j=1;j<6;j++){
var cell=document.createElement ("td");
cell.id =i+"/"+j;
cell.appendChild(document.createTextNode ("th"+cell.id+"column"));
row.appendChild(셀);
}
document.getElementById("newbody").appendChild(행);
}
}
행을 추가하려면appendChild 메소드를 사용하여 작성하십시오.
다음과 같이 코드 코드를 복사합니다.
함수 addRow(){
var length=document.getElementById("table").rows.length;
/*document.getElementById("newbody").insertRow(length);
document.getElementById(length+1).setAttribute("id",length+2);*/
var tr=document.createElement("tr");
tr.id=길이+1;
var td=document.createElement("td");
for(i=1;i<4;i++){
td.id=tr.id+"/"+i;
td.appendChild(document.createTextNode("th"+td.id+"column"));
tr.appendChild(td);
}
document.getElementById("newbody").appendChild(tr);
}
insertRow가 작성한 행을 추가하는 또 다른 방법
다음과 같이 코드 코드를 복사합니다.
함수 addRow_withInsert(){
varrow=document.getElementById("table").insertRow( document.getElementById("table").rows.length);
var rowCount =document.getElementById("table").rows.length;
var countCell=document.getElementById("table").rows.item(0).cells.length;
for(var i=0;i<countCell;i++){
var cell=row.insertCell(i);
cell.innerHTML="new"+(rowCount)+"/"+(i+1)+"열";
cell.id=(rowCount)+"/"+(i+1);
}
}
행을 삭제하려면 deleteRow(row Index) write를 사용하십시오.
다음과 같이 코드 코드를 복사합니다.
/*deleteRow(row Index)를 사용하여 행 삭제*/
함수 제거Row(){
/* var row=document.getElementById("2");
var index=row.rowIndex;
경고(색인);*/
document.getElementById("newbody").deleteRow(document.getElementById(document.getElementById("table").rows.length).rowIndex);
}
열을 추가하려면 insertCell(열 위치) 메서드를 사용하여 작성합니다.
다음과 같이 코드 코드를 복사합니다.
함수 addCell(){
/*document.getElementById("table").rows.item(0).cells.length
테이블의 열 수를 가져오는 데 사용됩니다.
*/
for(var i=0;i<document.getElementById("table").rows.length;i++){
var cell=document.getElementById("table").rows[i].insertCell(2);
cell.innerHTML="열 "+(i+1)+"/"+3+";
}
}
열을 삭제하려면 deleteCell(열 위치) 메서드를 사용하여 씁니다.
다음과 같이 코드 코드를 복사합니다.
/*deleteCell(column position) 메소드를 사용하여 열 삭제*/
함수 제거셀(){
for(var i=0;i<document.getElementById("table").rows.length;i++){
document.getElementById("table").rows[i].deleteCell(0);
}
}
셀 병합(구현되지 않음)을 썼습니다.
내 코드에 문제가 있습니다. 주로 테이블이 엉망이 되고 수정되지 않았기 때문입니다.
다음과 같이 코드 코드를 복사합니다.
함수 rebulid(){
var startRow=document.getElementById("beginRow").value;/*시작 행*/
var endRow=document.getElementById("endRow").value;/*행 끝*/
var startCol=document.getElementById("beginCol").value;/*시작 열*/
var endCol=document.getElementById("endCol").value;/*열 끝*/
var tempCol=beginRow+"/"+beginCol;/*변경하려는 속성이 있는 열 찾기*/
경고(tempCol);
var td=document.getElementById(tempCol);
/*병합할 셀 삭제*/
for(var x=beginRow;x<=endRow;x++){
for(var i=beginCol;i<=endCol;i++){
if(x==beginRow){
document.getElementById("table").rows[x].deleteCell(i+1);
}
또 다른{
document.getElementById("table").rows[x].deleteCell(i);
}
}
}
td.rowSpan=(endRow-beginRow)+1;
}