我无法通过ID循环获取元素

时间:2020-02-05 02:22:55

标签: javascript

我正在尝试从具有指定类的每个对象中通过id获取元素,因此我可以从中获取价值,但它说:

i [i] .getElementById不是函数

function filterBy()
{
    var a, txtValue;
    var e = document.getElementById("filterBy");
    var strUser = e.options[e.selectedIndex].value;

    ul = document.getElementById("allproducts");
    li = ul.getElementsByClassName('card');

  for (i = 0; i < li.length; i++) 
  {
      a = li[i].getElementById("prodFilter");
    txtValue = a.value;

    if (e.options[e.selectedIndex].value == "all")
    {
        li[i].style.display = "";
    }
    else if (a == strUser) 
    {
      li[i].style.display = "";
    }
    else 
    {
      li[i].style.display = "none";
    }
  }

}

如何获取每个元素“ li”内部的id元素?

2 个答案:

答案 0 :(得分:2)

我们有document.getElementById,但没有element.getElementById。您可以使用querySelector

li[i].querySelector('#prodFilter');

请注意,id在文档中应该是唯一的,请考虑将其替换为class

答案 1 :(得分:0)

我认为您正在混淆一些事情。

public static void numFreq(List<Integer> list) {
    Map<Integer, Integer> map = new HashMap<>();
    list.stream().forEach(i -> map.put(i, 1 + map.getOrDefault(i, 0)));

    System.out.println(map.entrySet().stream().map(val -> String.format("%s^%s",
             val.getKey(), val.getValue())).collect(Collectors.joining("*")));
}

上面的代码将提供一个HTMLElementCollection,它几乎是一个元素数组。

li = ul.getElementsByClassName('card');

这将为您提供li元素,然后将其调用getElementById()。但是,并非所有元素都具有此功能。我相信只有文档(https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById)。

因此您可以尝试使用此方法,而不要使用for (i = 0; i < li.length; i++) { a = li[i].getElementById("prodFilter"); }

li[i]