首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可使用递归javascript函数扩展的表行

可使用递归javascript函数扩展的表行
EN

Stack Overflow用户
提问于 2012-12-12 00:04:54
回答 2查看 983关注 0票数 0
代码语言:javascript
复制
<tr onclick="removeAllDescendant(this)" parentid="@item.parentId" id="@item.id">
    <td>
    Use: <input type="checkbox" value="@item.iaId" />&nbsp; &nbsp; &nbsp; 
    Qty: <input type="text" class="width_100" />
</td>
<td>@item.location</td>
<td>@item.qty @item.uom</td>
<td>@item.createDt</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>

我动态地创建了这些表行,每一行都有parent-id和一个id。我想折叠所有后代行,当用户在行单击时。

这是javascript代码-

代码语言:javascript
复制
function removeAllDescendant(row)
{
   var id = $(row).attr("id");
   removeRows(row, id);
}

function removeRows(row, id) {
    var tr = $(row).nextAll('tr [parentid=' + id + ']');
    if (tr.length > 0) {
        for (i = 0; i < tr.length; i++) {
            id = $(tr[i]).attr("id");
            alert(id);
            removeRows(tr[i], id);
        }
    }
    $(tr).remove();
}

你们有没有看到这个递归函数中有任何bug,因为某些原因,如果我有超过3个级别,这个函数就不能工作了。

EN

Stack Overflow用户

回答已采纳

发布于 2012-12-13 02:14:59

在调试javascript代码后,我找到了问题的原因。我应该为每个递归调用定义变量(I)。所以修正后的代码是..。

代码语言:javascript
复制
function removeRows(row, id) {
    var tr = $(row).nextAll('tr [parentid=' + id + ']');

    if (tr.length > 0) {
        for (var i = 0; i < tr.length; i++) {
            var tempId = $(tr[i]).attr("id");
            removeRows(tr[index], tempId);
        }
    }
    $(tr).remove();
}

现在完美地工作了:)

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13823799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档