Javascript &引用;document.getElementsByClassName“;已找到元素,但无法访问

Javascript &引用;document.getElementsByClassName“;已找到元素,但无法访问,javascript,jquery,getelementsbyclassname,Javascript,Jquery,Getelementsbyclassname,我有一个很难解决的问题,我在互联网上找不到任何解决办法 我使用document.getElementsByClassName通过它的类访问一个HTML元素,我的元素是dxDataGrid的filterRow: var filterRowElement = document.getElementsByClassName("dx-datagrid-filter-row"); console.log(filterRowElement);

我有一个很难解决的问题,我在互联网上找不到任何解决办法

我使用
document.getElementsByClassName
通过它的类访问一个
HTML元素
,我的元素是
dxDataGrid的
filterRow

 var filterRowElement = document.getElementsByClassName("dx-datagrid-filter-row");
                console.log(filterRowElement);
                console.log(filterRowElement.length);
我的问题是:第一个
控制台.log
返回
HTMLCollection
,长度为1,但第二个返回0(我试图获取长度以访问
FilterRowelment[0]

我尝试了
console.log(FilterRowelment[0])
,也得到了
未定义的

这是屏幕截图:

我不知道为什么,这是我第一次遇到这个问题

请给我一些建议。谢谢大家!

谢谢,我想我的问题是
DXGRID FILTERROW元素
连续更改,因此我无法访问旧元素

更新

我不知道为什么,但使用Jquery保存我(可能不总是这样)

结果:


非常感谢

更新:第二行为
0
,第一行为
1
的一个原因是:
您打印出
filterWellement.length
,当时是
0
。当您的事件周期结束时,您的框架(React、Angular等)会更新页面(在您的操作之后或在下一个事件周期中的操作之前)。现在
console.log
打印出整个结构,当您在调试器中查看它时,现在它是
1

为了解决这个问题,我以前不得不这样做:

setTimeout(() => {  

  doSomething();

}, 0);
因此,现在您正在等待下一个事件周期,以便“构造”或“更新”页面

如果它是一个静态页面,我可以为这两种情况获取
1
,并可以访问它:

你是说

console.log(filterRowElement);
给您一个
长度
1
的对象,然后

console.log(filterRowElement.length);
给你
0

以下工作:

arr=document.getElementsByClassName(“foobar”);
控制台日志(arr);
控制台日志(arr.length);
arr[0]。innerHTML=“你好世界”;
arr[0].style.background=“橙色”;
arr[0].style.display=“内联块”;
arr[0].style.padding=“1.2em”;
arr[0]。style.borderRadius=“6px”

是的,这是我第一次遇到这个问题,我通常像你一样使用
arr[0]
但没有发生错误。对,
getElementsByClassName
是实时的。。。您的页面正在更改吗?请尝试
document.querySelectorAll(.foo-bar”)
。@DavidLink由于返回的数组为空,请不要查看每个
foreach
的答案顶部。感谢您对我使用Jquery的支持。使用Jquery拯救我!这回答了你的问题吗?没有。foreach空了,我试过了,但没有工作,所以我问这里
console.log(filterRowElement.length);