目前正在处理我的个人投资组合并遇到了一个我无法找到答案的问题。首先,我的网页以主框架为基础,这意味着用户不是通过更改页面而是通过更改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以显示正确的图库。
非常感谢! :)
答案 0 :(得分:1)
您使用getElementsByName('oth1')
代替getElementById('oth1')
。第一个函数实际上返回一个使用给定名称而不是只有一个元素的所有元素的数组。