Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 迭代iframe中的所有ID_Javascript_Jquery_Iframe - Fatal编程技术网

Javascript 迭代iframe中的所有ID

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

我希望使用以字符串开头的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.log(myArray);

我做错了什么?有一次我让它工作了,但我不知道我做了什么把它搞砸了…

您的代码有一些问题:

  • myArray
    是在
    .ready()
    函数之外定义的。只需将它移动到
    .ready()
    函数中,它就会工作。有关这方面的更多信息,请参阅
  • 您需要使用
    .text()
    而不是
    .text
    来获取
    $(this)
    的文本。(文本是使用函数而不是属性获取的)
  • 您需要等待iframe加载
    .load()
    ,而不是
    .ready()
  • 因此,在所有这些都已修复的情况下,您的代码应该是这样的:

    JS:

    $(文档).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文档