Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对DOM元素排序_Javascript_Dom - Fatal编程技术网

Javascript 对DOM元素排序

Javascript 对DOM元素排序,javascript,dom,Javascript,Dom,给定两个DOM元素,比如a和b,我们如何确定文档中哪一个先出现 我正在为一组元素实现拖放。元素可以按任何顺序选择,但当拖动它们时,这些元素需要按“正确”的顺序移动。我认为最简单的方法是为它们提供一些常见的东西,以便轻松查找。例如,如果它们都具有相同的name属性,则可以使用getElementsByName,它将按照元素在文档中的显示顺序返回元素集合: var els = document.getElementsByName("myName"); 在这里,els[0]将包含文档的第一个元素,e

给定两个DOM元素,比如a和b,我们如何确定文档中哪一个先出现


我正在为一组元素实现拖放。元素可以按任何顺序选择,但当拖动它们时,这些元素需要按“正确”的顺序移动。

我认为最简单的方法是为它们提供一些常见的东西,以便轻松查找。例如,如果它们都具有相同的
name
属性,则可以使用
getElementsByName
,它将按照元素在文档中的显示顺序返回元素集合:

var els = document.getElementsByName("myName");
在这里,
els[0]
将包含文档的第一个元素,
els[1]
将包含第二个元素

使用选择器,您可以通过使用组合的
选择器分隔符来实现同样的效果:

var els = document.querySelectorAll("#el1, #el2");
唯一的缺点是,
querySelectorAll()
仅受较新浏览器支持(因此排除了IE6/7)。另一种方法是使用如下框架:


你要找的是。具有浏览器兼容性详细信息,并且具有IE版本。

可以假定他正在比较的两个元素具有相同的标记名。@austin cheney:您将
getElementsByName
getElementsByTagName
混淆了
getElementsByName
检索具有相同名称属性的所有元素,例如
Hello
。此外,我还添加了其他替代方法。只允许少数元素具有name属性。getElementsByTagName创建具有指定标记名的所有元素的数组。如果op需要比较同一标记名的两个元素,那么该方法将不起作用,因为这两个元素都将不明确地包含在指定的数组中。换句话说,例如,getElementsByTagName在两个div元素之间没有应用足够的消歧功能。@Austin Cheney:这就是为什么我不推荐
getElementsByTagName
,首先,你的观点是什么?
var els = $("#el1, #el2");