스킬(skills)/HTML

table tr 에 display:none 혹은 display:none 적용시 문제점

후바스탱크 2017. 1. 18. 18:51

<!doctype html>

<html lang="en">

 <head>

  <meta charset="UTF-8">

  <title>Document</title>

  <script  src="http://code.jquery.com/jquery-latest.min.js"></script>

  <script>

function hideTr() {

$('#asdf').css('display', 'none');

}


function showTr() {

$('#asdf').css('display', ''); //절대로 block을 써서는 안됨

}

  </script>

 </head>

 <body>

<table border="1" width="700">

<colgroup>

<col width="18%" />

<col width="*" />

</colgroup>

<tbody>

<tr>

<th>제목</th>

<td>내용</td>

</tr>

<tr id="asdf">

<th>제목2</th>

<td>내용2</td>

</tr>

</tbody>

</table>  


<input type="button" value="감추기" onclick="hideTr()" />

<input type="button" value="보이기" onclick="showTr()" />

 </body>

</html>


위와 같은 코드처럼 tr에 display:none 혹은 display:block 적용 시


제대로 표시가 안되는 문제가 발생한다.



버전이 낮은 ie 에서는 잘 적용이 되는데 표준 계열의 크롬이나 ie11 등에서는 display:block 시에 이상하게 표시가 된다.


이는 표준 계열에서는 display:block이 아니고 display:table-row 를 사용하기 때문인데


이를 표준 계열의 브라우져와 병행하여 처리하기가 많이 까다롭다



해결방법은 간단하다.


display:block 이 아니라 그냥 display: 만 적으면 된다.


block 을 아예 안쓰면 된다.


끝!



※ show(), hide() 함수 이용을 더 권장한다.