我动态的生成一个表格代码如下:
这样动态可以实现点击其中的一行响应selectRows事件,但是我如果删去中间的一行,怎么能够把他的 selectRows事件也改变了呢?高手请指教一下
var table = document.getElementById("tzConditionTable");//取得table
var oTBody = document.getElementById("tzConditionTBody")
var oTr = document.createElement("tr");
var oTr = document.createElement("tr");
if(index != 1)
{
index = oTBody.rows.length +1;
}
if (window.attachEvent)
{
//IE 的事件代码
oTr.attachEvent("onclick", function(){selectRow(index-1)});
}
else
{
//其它浏览器的事件代码
oTr.addEventListener("click",function(){selectRow(index-1)},false);
} / 中间td部分省略
oTr.appendChild(oTd);
oTBody.appendChild(oTr);
if(tbodyFlg == false)
{
table.appendChild(oTBody);
}
这样动态可以实现点击其中的一行响应selectRows事件,但是我如果删去中间的一行,怎么能够把他的 selectRows事件也改变了呢?高手请指教一下
var table = document.getElementById("tzConditionTable");//取得table
var oTBody = document.getElementById("tzConditionTBody")
var oTr = document.createElement("tr");
var oTr = document.createElement("tr");
if(index != 1)
{
index = oTBody.rows.length +1;
}
if (window.attachEvent)
{
//IE 的事件代码
oTr.attachEvent("onclick", function(){selectRow(index-1)});
}
else
{
//其它浏览器的事件代码
oTr.addEventListener("click",function(){selectRow(index-1)},false);
} / 中间td部分省略
oTr.appendChild(oTd);
oTBody.appendChild(oTr);
if(tbodyFlg == false)
{
table.appendChild(oTBody);
}
每行里面有selectRows事件,如果删除的话 就把该行的selectRows事件删除就oK 了
那么每行你个一个ID 不就可以了了吗 个人理解
xxxx.onclick=function(...){...}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
body {
font-family: Verdana, Geneva, sans-serif;
font-size: 12px;
margin: 0px;
padding: 0px;
}
table {
font-size: 12px;
font-family: Verdana, Geneva, sans-serif
}
td {
text-align: center;
background: #FFF
}
tr {
height: 20px;
}
th {
background: #9DACBF;
color: #FFF;
height: 20px;
line-height: 20px
}
a {
color: #99C;
}
a:hover {
color: #F93
}
.input td {
padding: 2px
}
.input input {
width: 100%;
border: 1px solid #000;
overflow: hidden
}
</style>
<script type="text/javascript">
//简化document.getElementById()方法
function $(obj) {
return document.getElementById(obj);
}
//插入行
function insRow() {
var targetTable = $("nw");
var lastRow = getTBody(targetTable).appendChild(targetTable.rows[1].cloneNode(true)); //插入行方法
clearTextBox(lastRow);
var newCell3 = lastRow.cells[2];
newCell3.innerHTML = '<a href="#">删除</a>';
newCell3.onclick = delRow;
}
//删除行
function delRow() {
var targetTable = $("nw");
targetTable.deleteRow(this.parentNode.rowIndex);
}
function getTBody(table) {
for (var i=0; i<table.childNodes.length; i++) {
if (table.childNodes[i].nodeType == 1
&& table.childNodes[i].tagName.toLowerCase()=="tbody")
return table.childNodes[i];
}
}
function clearTextBox(target) {
var allInputs = target.getElementsByTagName("input");
var ipt;
for (var i=0; i<allInputs.length; i++) {
ipt = allInputs[i];
if (ipt.type.toLowerCase()=="text") {
ipt.value = "";
}
}
}
</script>
<title>Javascript控制表格 实现动态添加和删除表格内容</title>
</head>
<body>
<table id="nw" cellpadding="0" cellspacing="1" border="0" width="320" bgcolor="#CCCC99">
<th>编号</th>
<th>名称</th>
<th>操作</th>
<tr class="input">
<td><input type="text" id="name" /></td>
<td><input type="text" id="add" /></td>
<td style="width: 52px"><input type="button" value="添 加" class="btn" onClick="insRow()" /></td>
</tr>
</table>
</body>
</html>
jQuery 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的也有效。<body>
<div class="clickme">Click here</div>
</body>可以给这个元素绑定一个简单的click事件:
$('.clickme').bind('click', function() {
alert("Bound handler called.");
});当点击了元素,就会弹出一个警告框。然后,想象一下这之后有另一个元素添加进来了。
$('body').append('<div class="clickme">Another target</div>');
尽管这个新的元素也能够匹配选择器 ".clickme" ,但是由于这个元素是在调用 .bind() 之后添加的,所以点击这个元素不会有任何效果。 .live() 就提供了对应这种情况的方法。如果我们是这样绑定click事件的:
$('.clickme').live('click', function() {
alert("Live handler called.");
});
然后再添加一个新元素:
$('body').append('<div class="clickme">Another target</div>');
然后再点击新增的元素,他依然能够触发事件处理函数。
oTr.attachEvent( "onclick", function(){ selectRow(this.rowIndex); } );