删除HTML元素
删除HTML元素也是通过删除节点来完成的。对于普通的HTML元素,可用通用方法来删除节点,而列表框、下拉菜单、表格则有额外的方法来删除HTML元素。
删除节点
删除节点通常借助于其父节点,Node对象提供了如下方法来删除子节点。
➢ removeChild(oldNode):删除oldNode子节点。
在从父节点中删除该子节点后,该子节点代表的内容也会消失。下面的代码通过控制HTML增加、删除节点来使页面中的表格出现、隐藏。
例子
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title> 删除子节点 </title>
</head>
<body id="test">
<input id="add" type="button" value="增加" disabled
onclick="add();"/>
<input id="del" type="button" value="删除"
onclick="del();"/>
<div id="target" style="width:240px; height:50px;
border:1px solid black">被控制的目标元素
</div>
<script type="text/javascript">
//获取body元素
var body = document.getElementById("test");
//获取被控制的目标元素
var target = document.getElementById("target");
var add = function()
{
// 添加目标元素
body.appendChild(target);
document.getElementById("add").disabled = "disabled";
document.getElementById("del").disabled = "";
}
var del = function()
{
// 删除目标元素
body.removeChild(target);
document.getElementById("del").disabled = "disabled";
document.getElementById("add").disabled = "";
}
</script>
</body>
</html>
删除列表框和下拉菜单的选项
删除列表框、下拉菜单的选项有两种方法:
➢ 利用HTMLSelectElement对象的remove()方法删除选项。
➢ 直接将指定选项赋为null即可。
对于HTMLSelectElement对象而言,它提供了如下方法用于删除选项。
➢ remove(long index):删除指定索引处的选项。
上面方法中的index是需要删除选项所在的索引值。如果该索引值比下拉列表中选项的最大索引值还大,或者索引值小于0,则该方法不会删除任何选项。下面的页面演示了动态增加下拉列表的选项,并可以删除下拉列表的选项。
例子
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title> 删除列表项 </title>
</head>
<body>
<input id="opValue" type="text"/>
<input id="add" type="button" value="增加"
onclick="add();"/>
<input id="del" type="button" value="删除"
onclick="del();"/><br />
<select id="show" size="8" style="width:120px;">
</select>
<script type="text/javascript">
var show = document.getElementById("show");
// 增加下拉列表选项的函数
var add = function()
{
// 以文本框的值创建一个<option.../>元素
var op = new Option(document
.getElementById('opValue').value);
//增加选项
show.options[show.options.length] = op;
}
var del = function()
{
// 如果有选项
if(show.options.length > 0)
{
// 删除最后的一个选项
show.remove(show.options.length - 1);
}
}
</script>
</body>
</html>
提示
如果想删除某个列表框、下拉菜单的全部选项,没有必要采用循环的方式逐一删除每个选项,将列表框或下拉菜单的innerHTML属性赋为null,即可一次性删除该列表框、下拉菜单的全部选项。
删除表格的行或单元格
删除表格的指定表格行使用HTMLTableElement对象的如下方法。
➢ deleteRow(long index):删除表格中index索引处的行。
删除表格行的指定单元格使用HTMLRowElement对象的如下方法。
➢ deleteCell(long index):删除某行index索引处的单格。
例子
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title> 删除表格的行和格 </title>
</head>
<body>
<input id="delrow" type="button" value="删除表格最后一行"
onclick="delrow();" /><br />
<input id="delcell" type="button" value="删除最后一行的最后一格"
onclick="delcell();" /><br />
<table id="test" border="1" style="width:400px;">
<caption>疯狂Java体系</caption>
<tr>
<td>疯狂Java讲义</td>
<td>轻量级Java EE企业应用实战</td>
</tr>
<tr>
<td>疯狂Ajax讲义</td>
<td>经典Java EE企业应用实战</td>
</tr>
<tr>
<td>疯狂XML讲义</td>
<td>疯狂Android讲义</td>
</tr>
</table>
<script type="text/javascript">
// 获取目标表格
var tab = document.getElementById("test");
// 删除行的函数
var delrow = function()
{
if (tab.rows.length > 0)
{
// 删除最后一行
tab.deleteRow(tab.rows.length - 1);
}
}
// 删除目标表格的最后一格
var delcell = function()
{
// 获取表格的所有行
var rowList = tab.rows;
// 获取表格的最后一行
var lastRow = rowList.item(rowList.length - 1);
if(lastRow.cells.length > 0)
{
// 删除表格的最后一格
lastRow.deleteCell(lastRow.cells.length - 1);
}
}
</script>
</body>
</html>
注:本博客内容节选自李刚编著的疯狂HTML 5/CSS 3/JavaScript讲义 ,详细内容请参阅书籍。