代码如下:
/**
*
*
*
action
*
id
主键值
*
obj
删除行的<a>
*/
function
removeRow(action,id,obj){
if(confirm('确定要删除吗?')){
Ext.Ajax.request({
url
:
encodeURI("alone.portal?.f=${namespace}&.pmn=view&action="+action),
params
:
{
id
:
id
},
success
:
function(response)
{
delrow(obj)
alert("删除成功!")
},
failure
:
function(response){
alert("连接异常或网络中断!")
}
})
}
}
//删除行
function
delrow(oElement){
//判断响应事件的当前元素
//var
myEvent
=
evt?evt:(window.event?window.event:null)
//var
oElement
=
myEvent.srcElement
?
myEvent.srcElement
:
myEvent.target
while(oElement.tagName!="TR"){
//一直查找获取到为TR的对象
oElement=oElement.parentNode
}
var
oTBody=oElement.parentNode
//取得表格对象
oTBody.removeChild(oElement)
}
初步怀疑你的删除事件绑定有问题:新加入的DOM元素未绑定到事件。这种情况应该使用事件委派来做,你用 jQuery 吗?假设你的购物车列表的 HTML 结构如下:
<ul id="cartList"><li>
购物车商品1
<button>删除</button>
</li>
<li>
购物车商品2
<button>删除</button>
</li>
……
</ul>
则删除购物车商品的代码为(用了 jQuery):
$('#cartList').on('click', 'button', function() { // 委派 button 的点击事件$(this).parent().remove() // 移除购物车里当前商品
})
如你所言,表格是根据json传递过来的文件动态生成的,那么表格的html代码应该是你用script脚本生成的。
在生成表格的html代码时,在每个tr标签中,加上双击要执行的脚本代码,并附带该行的参数(通常是每条记录中的主键,用于区分不同的记录)。在双击后调用的函数中,进行显示该行全部信息的处理。
下面是一段示例:
表格的html代码
<body>
<table border="1">
<thead>
<td>序号</td>
<td>内容</td>
<td> *** 作</td>
</thead>
<tr ondblclick="dc('1')">
<td>1</td>
<td>内容部分</td>
<td><a onclick="del('1')">删除</a>&nbsp&nbsp<a onclick="mod('1')">修改</a></td>
</tr>
</table>
</body>
2.要说明的部分:
html代码中有dc(),del(),mod()三个函数的调用代码,其中的参数在示例中均为“1”,在实际情况中,该参数是根据json数据中,每条记录的主键值动态创建的。
3.在页面的</head>和<body>标签之间,加上处理双击,和删除修改 *** 作的代码
<script>
function dc(param) //处理双击 *** 作
{
//双击 *** 作的具体处理步骤,根据传入的参数param,在json中找到需要显示的数据并将全部信息进行显示(可在新页面中显示,或者利用alert窗口显示,方法很多)
}
funcion del(param) //处理点击“删除”按钮后的 *** 作
{
//删除 *** 作的具体过程,根据传入的参数param,将json数据中对应的数据删除,再重新绘制一遍table
}
function mod(param) //处理点击“修改”按钮后的 *** 作
{
//修改 *** 作的具体过程
//第一步,将table中对应的tr行中的td中的内容修改为可编辑的控件,如input数据框等,输入数据
//第二步,利用ajax将修改后的数据内容及param参数值传递给后台服务,更新数据库
//第三步,取得新的json数据,重新绘制table
}
</script>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)