【发布时间】:2014-09-03 12:48:19
【问题描述】:
我正在开发一个网站,用户可以将一些项目拖放到盒子中。这些框表示为 div 元素。最后,我运行这个 javascript 函数来为每个 div 元素返回一个字符串,以查看哪些项目(子项)被拖入。
function get_children_string(div_id) {
var elem = document.getElementById(div_id);
var child_str = div_id;
var i = 0;
for(i=0;i<elem.childNodes.length;i++)
child_str = child_str + elem.childNodes[i].id;
return child_str;
}
例如,如果将三个id分别为s1、s4、s6的item拖到一个id为d1的div中:
get_children_string('d1') // returns 'd1s1s4s6'
问题是每当我拖动超过 5 个项目时,有些孩子会迷路。例如,我拖放 7 个项目,我得到一个包含 4 个子节点的结果。或者我拖动 6 个项目,得到 3 个子节点。我确保所有子 id 都很好(我的意思不是空字符串),实际上每次我得到 elem.childNodes.length 3 或 4。
我在这里做错了什么?任何人都可以提出更好的方法来处理这个问题吗?
【问题讨论】:
-
同时发布 html 代码,以及创建 div 的方式和位置
-
@AbdulJabbar 我正在使用一些 php 函数/类来构建我的 html 代码。并且很难从中创建 html 代码。对此感到抱歉。
-
hmm 你的问题的一个原因可能是当你的这部分代码运行时所有的 div 还没有创建?他们都被创建了,你可以访问他们的 id 吗?
-
是的,此代码在单击标有“保存”的按钮后运行。到那时,所有内容都已创建并在屏幕上可见。
标签: javascript html drag-and-drop