如何获取当前ul li';当我尝试对它们进行排序时,javascript中的长度是多少? 1 1 1 2 2 2 3 3 3

如何获取当前ul li';当我尝试对它们进行排序时,javascript中的长度是多少? 1 1 1 2 2 2 3 3 3,javascript,Javascript,我上下移动li,当我这样做时,我已经编写了调用一个jquery(mouseStop函数(event,noPropagation))的代码 我正在写这个函数 <ul id="types" style="list-type:none;"> <li id="categories" style="list-type:none;">1 <ul> <li style="list-type:none;">1</li><br/>

我上下移动li,当我这样做时,我已经编写了调用一个jquery(mouseStop函数(event,noPropagation))的代码

我正在写这个函数

<ul id="types" style="list-type:none;">

<li id="categories" style="list-type:none;">1
<ul>
    <li style="list-type:none;">1</li><br/>
    <li style="list-type:none;">1</li>
</ul>
</li>

<li id="categories" style="list-type:none;">2
<ul>
    <li style="list-type:none;">2</li><br/>
    <li style="list-type:none;">2</li>
</ul>
</li>

<li id="categories" style="list-type:none;">3
<ul>
    <li style="list-type:none;">3</li><br/>
    <li style="list-type:none;">3</li>
</ul>
</li>

</ul>
var tagetNode=this.currentItem[0].parentNode.id
if(this.element[0].id==“categories”){
var targetlistlength=document.getElementById(targetListId).getElementsByTagName(“li”).length;
//var targetlistlength=this.parentNode.getElementsByTagName(“li”).length;
var PageIds=“”;
对于(变量i=0;i
当我对子li进行排序时,会调用上述函数,但它总是只获取第一个li长度的第一个子ul。。我想要当前ulli的长度,我正在尝试排序

我也尝试过使用注释行来获取li的长度,但由于this.parentNode未定义,我得到了错误


任何人请告诉我我能做什么

由于没有可用的工作演示,您可以检查使用
console.log($(this))时得到的结果。如果在控制台中获得预期的
li
,则可以执行以下代码以获得其父级子级的长度

var tagetNode = this.currentItem[0].parentNode.id

if (this.element[0].id == "categories") {
    var targetlistlength = document.getElementById(targetListId).getElementsByTagName("li").length;
    // var targetlistlength = this.parentNode.getElementsByTagName("li").length;
    var PageIds = "";
    for (var i = 0; i < targetlistlength; i++) {
        PageIds += document.getElementById(targetListId).getElementsByTagName("li")[i].getAttribute("value") + ",";
    }

}

不能有多个具有相同id的元素。 尝试用类替换它们或使它们唯一

如果您具有唯一id(例如类别-1、类别-2等),则if条件可能如下所示

或者,如果使用类,则if条件可能是:

if (this.element[0].id.match("^categories") != null) { ... }

您的JavaScript代码不包含jQuery;这是故意的,还是jQuery对您有用?如果您使用jQuery,为什么不使用$而不是document.getElementById()?我猜OP故意添加了
jQuery
标记来满足“提问”的最低要求对不起,在我的.js文件中我也有jQuery代码。。我有时也在jquery中使用javascript代码来简化任务。。无论如何,这不是jquery或javascript的问题。。让我知道javascript的答案,如果你能告诉我我也问过javascript的人,但他们无法回答我的问题。。这就是为什么我添加了jquery标签来获得youHi Jasd的答案谢谢你给出答案,因为有重复id的我遇到了问题,所以我删除了if条件,然后它就开始工作了,而且它也正确地获得了我试图移动的li的长度。啊,我明白了,如果条件不再是必需的,因为currentItem现在保存了正确的项目…嗨,CodefFormer,因为有重复id的我遇到了问题,所以我删除了if条件,然后它就工作了,而且它也正确地获取了我试图移动的li的长度。太好了,对你有好处!。顺便说一句,你有没有试过我的代码,如果它也能工作,那么你可以使用简化的代码,因为它非常可读。嗨,我试过你的代码,但我不工作。console.log($(this))正在收到类似于此的“\u firebug”以及$(this).parent().children()。length正在收到警报,因为您可能将其放置在错误的位置。如果你想更进一步,想看你的代码(在jsfiddle.net上)吗?不,谢谢codeformer,我用我的代码得到了结果,足够了,谢谢codeformer
if (this.element[0].id.match("^categories") != null) { ... }
if (this.element[0].className.match("(^| )categories( |$)") != null) { ... }