【发布时间】:2021-04-08 16:09:51
【问题描述】:
我制作了一个可拖放的表格,用于对产品进行分类。
我的桌子是这样的:
<table class="table table-sortable" id="mytab">
<tbody>
[{foreach from=$mylist item=listitem}]
[{assign var="_cnt1" value=$_cnt1+1}]
<tr draggable="true" id="test_variant.[{$_cnt1}]">
<td class="idcount">[{$_cnt1}]</td>
<td class="[{$listclass}]">Productname</td>
<input id="sortcount[{$_cnt1}]" class="sortcount" type="hidden" value="[{$_cnt1}]"/>
</tr>
[{/foreach}]
</tbody>
</table>
我的 jQuery 看起来像这样:
$(function() {
$('.table-sortable tbody').sortable({
handle: 'span'
});
$('.table-sortable tbody').sortable().bind('sortupdate', function(e, ui) {
function updateTable(){
var table = document.getElementById("mytab");
for (var i = 0, row; row = table.rows[i]; i++) {
$( row ).attr("id","test_variant."+i);
$( row ).find(".idcount").text(i);
$( row ).find(".sortcount").val(i+10);
}
}
setTimeout(updateTable, 100);
});
});
问题是,在我拖放我的项目后,dom 或其他东西不再存在。
就像我的系统不会保存拖放的条目(但其他已更新但未拖动的条目)。
是什么导致我来到这里,因为我不明白是当我拖动一个项目并尝试像这样访问它时
document.getElementById("sortcount1").value = "200";
它只是说
Uncaught TypeError: Cannot set property 'value' of null like it's not existing
我没有问题访问其他项目。
当我通过单击 chrome devtools 中的元素打开 dom 时,然后返回控制台并再次尝试它再次工作,就像它需要初始化或其他东西一样。
希望有人能给我一个提示。
谢谢!
【问题讨论】:
-
您的
for()循环看起来定义不正确。我没有看到 For 循环中定义的条件。 -
你能拖放你的物品吗?工作小提琴检查this
-
嘿,我可以拖放我的项目,但我无法保存我的更新,因为被拖放的更新就像不存在一样
标签: javascript html jquery dom