我编写了一个php页面,它将mysql数据库中的信息整齐地显示在表格中。我想用onLoad事件处理程序隐藏空表行。
这是一个示例表,其代码在没有内容时隐藏<td>
。但我只能用它来处理不同的ID:
<script type="text/javascript">
function hideTd(id){
if(document.getElementById(id).textContent == ''){
document.getElementById(id).style.display = 'none';
}
}
</script>
</head>
<body onload="hideTd('1');hideTd('2');hideTd('3');">
<table border="1">
<tr>
<td id="1">not empty</td>
</tr>
<tr>
<td id="2"></td>
</tr>
<tr>
<td id="3"></td>
</tr>
</table>
</body>
我想要做的是使用<td>
的类来实现同样的事情,同时只引用类一次,而不是引用我想要删除的每个id,这甚至不起作用我的动态内容。我尝试使用此代码:
<script type="text/javascript">
function hideTd(){
if(document.getElementsByClassName().textContent == ''){
document.getElementsByClassName().style.display = 'none';
}
}
</script>
</head>
<body onload="hideTd('1');">
<table border="1">
<tr>
<td class="1">not empty</td>
</tr>
<tr>
<td class="1"></td>
</tr>
<tr>
<td class="1"></td>
</tr>
</table>
</body>
但它不起作用。它应该隐藏具有指定类的空<td>
。如何使用类隐藏空<td>
,而不是ID?
答案 0 :(得分:36)
有几个问题:
getElementsByClassName()
。示例(未经测试):
<script type="text/javascript">
function hideTd(className){
var elements = document.getElementsByClassName(className);
for(var i = 0, length = elements.length; i < length; i++) {
if( elements[i].textContent == ''){
elements[i].style.display = 'none';
}
}
}
</script>
</head>
<body onload="hideTd('td');">
<table border="1">
<tr>
<td class="td">not empty</td>
</tr>
<tr>
<td class="td"></td>
</tr>
<tr>
<td class="td"></td>
</tr>
</table>
</body>
请注意getElementsByClassName()
is not available up to and including IE8。
<强>更新强>
或者,您可以为表格提供ID并使用:
var elements = document.getElementById('tableID').getElementsByTagName('td');
获取所有td
元素。
要隐藏父行,请使用元素的parentNode
属性:
elements[i].parentNode.style.display = "none";
答案 1 :(得分:1)
如果你想通过ClassName来做,你可以这样做:
<script type="text/javascript">
function hideTd(className){
var elements;
if (document.getElementsByClassName)
{
elements = document.getElementsByClassName(className);
}
else
{
var elArray = [];
var tmp = document.getElementsByTagName(elements);
var regex = new RegExp("(^|\\s)" + className+ "(\\s|$)");
for ( var i = 0; i < tmp.length; i++ ) {
if ( regex.test(tmp[i].className) ) {
elArray.push(tmp[i]);
}
}
elements = elArray;
}
for(var i = 0, i < elements.length; i++) {
if( elements[i].textContent == ''){
elements[i].style.display = 'none';
}
}
}
</script>