document.getElementsByTagName('iframe')[0]无法获得对象,但若不指定下标0却可以

问题如下

document.getElementsByTagName('iframe')[0]无法获得对象
document.getElementsByTagName('iframe')却可以,这是怎么回事?

代码及截图

var ifr = document.getElementsByTagName('iframe');
console.log(ifr);
console.log(ifr[0]);

clipboard.png

阅读 7.1k
6 个回答

你确定那个undefined是ifr[0]的执行结果? 而不是你的console.log(xxxx)?

document.getElementsByTagName('iframe'); 返回的是个动态集合, 里面的内容会在每次取值的时候变化.

如果在 console.log(ifr); 和 console.log(ifr[0]); 两天语句之间, 页面内的 iframe 被从文档中移除的话, 那么 console.log(ifr[0]) 此时就会变成 undefined. 题住可以在 console.log(ifr[0]) 后再输出次 ifr 确定一下是否发送了这种情况.

console.log(ifr); 
console.log(ifr[0]);
console.log(ifr);  // 确认此时 ifr 是否还有内容

没有重现出来,我在这个页面试了下,都成功输出了,麻烦再check一下代码
clipboard.png

不知道lz为何取不到,我在网页上试了一下,是可以取到的。

clipboard.png

新手上路,请多包涵
frames || window.frames 获取当前页面下的所有iframe
frames[index] || window.frames[index] || window.frames[iframe_id] 获取当前页面下的某个iframe
frames[index].frameElement.contentWindow 获取当前页面下的某个iframe的window
frames[index].frameElement.contentWindow.frames[sub_index].frameElemnet.contentWindow...
希望对你有用

今天遇到了同样的问题,而且是偶发问题,ios出现频率高,之前没有这个问题,从昨天开始测试出现问题的频率变高,同时在mac上的浏览器测试会出现getElementsByTagName('iframe')[0]获取不到对应iframe标签,不知道楼主解决没有

推荐问题