的getElementsByTagName( 'A'); 不工作?

tow*_*nie 6 html javascript dom

所以我这样做:

var stuff = document.getElementsByTagName('iframe');
Run Code Online (Sandbox Code Playgroud)

工作良好.然后我想这样做:

var other = stuff.getElementsByTagName('a');
Run Code Online (Sandbox Code Playgroud)

但它不起作用.它最终未定义.我可以:

var other = document.getElementsByTagName('a');
Run Code Online (Sandbox Code Playgroud)

这没关系.我不能在'iframe'中获得所有'a'吗?

编辑:所以我不拥有iframe,现在我的印象是我无法访问iframe生成的任何内容,这意味着我想我搞砸了.

ale*_*lex 10

使用..

var iframe = document.getElementsByTagName('iframe')[0],
    iframeDoc = iframe.contentWindow.document;
Run Code Online (Sandbox Code Playgroud)

规格.

然后,你可以叫getElementsByTagName('a')iframeDoc.或者,您可以访问iframeDoc.links,这可能不是完全相同,但可能是您想要的.

当然,这一切都依赖于访问iframedocument不违反同源策略.

  • 鉴于`iframe.contentDocument`在IE <8中不起作用,我选择仅使用可靠地跨浏览器工作的`iframe.contentWindow.document`.首次尝试使用contentDocument没有任何好处 - 只有代码会更长. (3认同)

cas*_*nca 2

getElementsByTagName返回匹配元素的数组。要访问单个 IFRAME,您可以使用stuff[0]例如。