Javascript 迭代iframe中的所有ID
我希望使用以字符串开头的ID在iframe中迭代所有跨度Javascript 迭代iframe中的所有ID,javascript,jquery,iframe,Javascript,Jquery,Iframe,我希望使用以字符串开头的ID在iframe中迭代所有跨度 var myString = "starts with this id"; var myArray = []; $('#ifr').ready(function(){ $(this).contents().find('span[id^="myString"]').each(function(i, obj) { myArray.push($(this).text); }); }); console.l
var myString = "starts with this id";
var myArray = [];
$('#ifr').ready(function(){
$(this).contents().find('span[id^="myString"]').each(function(i, obj) {
myArray.push($(this).text);
});
});
console.log(myArray);
我做错了什么?有一次我让它工作了,但我不知道我做了什么把它搞砸了…您的代码有一些问题:
myArray
是在.ready()
函数之外定义的。只需将它移动到.ready()
函数中,它就会工作。有关这方面的更多信息,请参阅.text()
而不是.text
来获取$(this)
的文本。(文本是使用函数而不是属性获取的).load()
,而不是.ready()
$(文档).ready(函数(){
$('#ptifrmtgframe').load(函数(){
var myArray=[];
$(this).contents().find('span[id^=“MTG_INSTR$”])。每个(函数(i,obj){
myArray.push($(this.text());
});
log(myArray);
});
});
HTML:
我想要这个文本
但不是这篇文章
您的iFrame是否有一个ifr的id?iFrame代码在哪里?iFrame中的跨距实际上是在iFrame内部,还是像您在问题中发布的跨距一样在外部?只有当我将代码输入到inspect元素并选择运行代码时,它才起作用。是的,iframe中有一个单独的html文档,上面有这些span,这对我不适用。我尝试了您的代码,并尝试用iframe的实际名称替换“#ifr”,即ptifrmtgframe。(使用#ifr听起来很愚蠢,但我是个新手)当我用iframe名称替换它时,我得到了[iframe#ptifrmtgframe]0:iframe#ptifrmtgframe
抱歉,它能工作。但它只在我在GoogleInspect元素中选择iframe,然后在控制台中键入代码时起作用。我希望能够使用此代码运行内容脚本。在inspect元素中,我可以选择“top”、“My Chrome Extension”、“AdBlock”和其他几个选项。在iframe中,我还可以选择src=".. 与网页域不完全相同。它是一样的,直到某一点,但之后有多余的文字。我不确定这是否重要,因为src的主要部分与iframe内部的跨度相同,还是它们实际上在iframe外部?它们在内部。iframe中有一个完整的单独html文档