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);