Javascript 无法在jQuery扩展中迭代HTMLCollection

Javascript 无法在jQuery扩展中迭代HTMLCollection,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我正在填表。下面的代码在Chrome控制台中运行良好,但当我将代码放入扩展(表单填充)中时,它不起作用 jQuery代码: var addressElement=$($('[data name=“selected address”]')[0]。子项)。筛选器(函数(idx){ 返回此.innerHTML.indexOf('52')==0; }); addressElement[0]。单击(); 还尝试了JavaScript代码 document.querySelectorAll('[ng bi

我正在填表。下面的代码在Chrome控制台中运行良好,但当我将代码放入扩展(表单填充)中时,它不起作用

jQuery代码:

var addressElement=$($('[data name=“selected address”]')[0]。子项)。筛选器(函数(idx){
返回此.innerHTML.indexOf('52')==0;
});
addressElement[0]。单击();
还尝试了JavaScript代码

document.querySelectorAll('[ng bind=“address.formattedAddress”]');
HTML:


注:我已经在谷歌尝试了所有可能的选择。但是,上面的选择器不返回标记的数组列表。请注意,它在开发者控制台中工作

addressElement[0].click();


我修复了通过setInterval在我的代码中添加一些延迟的问题,如果您想要所有的
,它们是该
的直接子项,为什么您不直接使用选择器:
'[data name=“selected address”]>a'
?另外,一般来说,您应该避免使用
.innerHTML
,除非您确定它是您所需要的。在本例中,您正在查找文本,因此应改用
.textContent
。请将问题添加到主题中:包含与问题重复的问题。对于Chrome扩展或Firefox WebExtensions,这几乎总是意味着包括manifest.json和一些背景、内容和/或弹出脚本/HTML。寻求调试帮助的问题(“为什么这段代码没有按我想要的方式工作?”)必须包括:(1)所需的行为,(2)特定的问题或错误,(3)在问题本身中重现它所需的最短代码。另请参见:、和。您是否尝试记录
$('[data name=“selected address”]')[0]的结果。子项以确保这些元素在代码执行时存在?最可能的问题是,它们是在代码运行后动态添加的。当然,还有其他的可能性,但是如果没有一个完整的模型来复制这个问题,我们就必须猜测这个问题是什么。@makyen。是的,已经记录了。它返回HTMLCollection(18)。我尝试通过使用for of、for in和normal for循环来循环它,但它没有循环。对于(i=0;i除非您希望集合发生更改,否则不要每次通过循环重新生成它以测试
长度
,这会导致每次DOM漫游,这只是无缘无故地燃烧计算周期。请将集合分配给变量。按索引直接迭代应该可以。虽然我更喜欢更复杂/更快的方法,但转换为rray可以像
[…document.querySelectorAll('[data name=“selected address”]>a')]
一样简单,然后您可以使用
.forEach()
(假设只有一个
所选地址
)。基本上,我们需要一个完整的方法来复制问题。这有什么帮助?DOM元素已经有了一个,应该可以正常工作。
$(addressElement[0]).click();