0

目前我正在处理我的个人作品集,遇到了一个我找不到答案的问题。首先,我的网页是在大型框架的基础上工作的,这意味着用户不是通过更改页面而是通过更改 iframe 中显示的页面来导航的。其次,用户必须做出选择(查看哪个画廊)必须更改 iframe。我所做的是,一旦网页在 iframe 中加载了页面,它就会运行一个 while 循环来不断检查值是否已更改(此值根据选择的画廊而变化)。但是 chrome 控制台给了我一个错误,它是:“未捕获的 TypeError:无法调用未定义的方法 'getElementById'”。这是发生错误的大型机中的javascript:(顺便说一下,'set'是存储值的元素)

function design()
        {
            document.getElementById('oth1').src = "frames/designs.htm";

            var p = document.getElementsByName('oth1').document.getElementById('set')

            while (p == "0")
            {
                if (p > "0")
                {
                    document.getElementById('oth1').src = "frames/"+ p +".htm";
                }
            }
        }

接下来是 iframe 文档的完整代码:

<!DOCTYPE HTML>

<html>

<head>
    <title>
        My Portfolio
    </title>
    <script>

        function skipper()
        {
            document.getElementById('set').value = "1";
        }

        function blurb()
        {
            document.getElementById('set').value = "2";
        }
    </script>

    <link rel="stylesheet" type="text/css" href="css/designs.css">
</head>

<body>
    <table style="width:1243px;border:0;">

        <tr>
            <td colspan="2" class="push">
            </td>
        </tr>

        <tr>
            <td width="180px">
                <p class="title"> Designs: </p>
            </td>
            <td>
            </td>
        </tr>

        <tr>
            <td id="set" value="0" colspan="5">
                <hr>
            </td>
        </tr>

        <tr>
            <td style="width:213px">
            </td>
            <td style="width:213px">
                <embed class="vid_quick" src="animations/skipperanimation.mov" width="213" height="160" autoplay="true" controller="false" loop="true" pluginspage="http://www.apple.com/quicktime/download/">
                </embed>
            </td>
            <td style="width:213px">
                <embed class="vid_quick" src="animations/blurbanimation.mov" width="213" height="160" autoplay="true" controller="false" loop="true" pluginspage="http://www.apple.com/quicktime/download/">
                </embed>
            </td>
            <td style="width:213px">
            </td>
            <td style="width:213px">
            </td>
        </tr>
        <tr>
            <td>
            </td>
            <td>
                <p class="text">
                    <p class="clickme" onclick="skipper()" id="skipper">Skipper</p>
                </p>
            </td>
            <td>
                <p class="text">
                    <p class="clickme" onclick="blurb()" id="blurb">Blurb</p>
                </p>
            </td>
        </tr>
    </table>
</body>
</html>

请您帮我解决问题,以便我可以更改 iframe 以显示正确的画廊。

非常感谢!:)

4

1 回答 1

1

您正在使用getElementsByName('oth1')而不是getElementById('oth1'). 第一个函数实际上返回一个包含给定名称的所有元素的数组,而不仅仅是一个元素。

于 2013-07-29T22:17:45.033 回答