使用window.frames属性与iframe ID获取iframe

时间:2014-02-09 06:53:01

标签: javascript html iframe

我想知道为什么以下不起作用:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Iframe</title>
    <style>
    </style>
</head>

<body>
    <iframe name="myFrame"></iframe>
    <script>
        window.frames["myFrame"].style.background = "green";
    </script>
</body>

</html>


但是,如果您使用ID直接访问iframe,则无问题:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Iframe</title>
    <style>
    </style>
</head>

<body>
    <iframe id="myFrame"></iframe>
    <script>
        document.getElementById("myFrame").style.background = "green";
    </script>
</body>

</html>


如何使用window.frames使第一个代码正常运行?

3 个答案:

答案 0 :(得分:1)

我认为您必须执行for循环才能找到所有帧,然后通过索引访问它们。

for(var i=0; i < frames.length; i++) {
    console.log(frames[i]);
}

答案 1 :(得分:0)

这对你不起作用,因为它将返回框架内的窗口对象,而不是iframe元素。如果您想使用name属性,可以使用document.getElementsByName("myFrame")[0],但我建议您通过ID访问它。

答案 2 :(得分:0)

对于getElementsByName,它应该工作相同,请注意,它返回的是元素数组,而不是元素数组。

这两个语句对于名称为“ myFrame”和id为“ myFrame”的框架应具有相同的作用:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ...
    'user',
    ...
]