Javascript -构建具有给定ID的所有LI的列表,并单击每个LI

Javascript - building a list of all LI with a given ID and click every one

本文关键字:LI 列表 单击 构建 ID Javascript      更新时间:2023-09-26

我有一个这样构建的列表:

<ul id="ajaxList" class="ajaxListUL"> 

然后,列表中的每个元素都像这样

<li class="ajaxListLI" id="ajaxListRow_32412312"> 

32412312是随机的。列表中的每个元素都有1这里的数字,比如

<li class="ajaxListLI" id="ajaxListRow_32443232"> ...
<li class="ajaxListLI" id="ajaxListRow_86752312"> ...
<li class="ajaxListLI" id="ajaxListRow_35644312"> ...

等。

每个LI都是可点击的,我需要创建一个循环来点击每个LI。

但是列表中也有这样的元素

<li class="ajaxListXT"> ...

不可点击

我需要做的是在页面上建立一个所有LI元素的数组,id以"ajaxListRow_"开始,然后单击它们。

我做了这么多:

var children = document.getElementById('ajaxList').childNodes;
var length = children.length;
  var elements = [];
  var child;
  for (i = 0;  i < length; i++) {
    child = children[i];
    if (child.id.substring(0, 12) == "ajaxListRow_")
      elements.push(child);
      document.child.click();
  }

停在IF行,抱怨id的东西。我已尝试删除id,但没有成功。

在这一点上,我甚至不知道这些行是否正确:

 elements.push(child);
  document.child.click();

用于向数组中添加LI并单击该LI。

我该怎么做?谢谢。

function getElementsByClassName(classname, node)  {
    if(!node) node = document.getElementsByTagName("body")[0];
    var a = [];
    var re = new RegExp('''b' + classname + '''b');
    var els = node.getElementsByTagName("*");
    for(var i=0,j=els.length; i<j; i++)
        if(re.test(els[i].className))
           a.push(els[i]);
    return a;
}
var childs = getElementsByClassName("ajaxListLI",document.getElementById('ajaxList'));
for(var i = 0; i<childs.length; i++){
   childs[i].click();
}

使用.children而不是.childNodes,否则您将获得分隔<li>元素的空文本节点。

var children = document.getElementById('ajaxList').children; // .children
var length = children.length;
var elements = [];
var child;
for (var i = 0; i < length; i++) {
    child = children[i];
    if (child.id.substring(0, 12) == "ajaxListRow_") elements.push(child);
    document.child.click();
}

document.child.click();也不正确。您可能指的是child.click();,尽管我不确定它是否真的会触发处理程序。

我可能倾向于替换:

if(child.id.substring(0, 12) == "ajaxListRow_")
if(child.id.indexOf("ajaxListRow_") === 0)

但这只是一个偏好。