我在一本书中关注这个例子,但我没有得到书中所示的相同结果。
两个HTML页面。
calcfactorialtopframe.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<script type="text/javascript">
function calcFactorial(factorialNumber) {
var factorialResult = 1;
for (; factorialNumber > 0; factorialNumber--) {
factorialResult = factorialResult * factorialNumber;
}
return factorialResult;
}
</script>
</head>
<body>
<frameset cols="100%,*">
<frame name="fraCalcFactorial" src="calcfactorial.html"></frame>
</frameset>
</body>
</html>
calcfactorial.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<script type="text/javascript">
function butCalculate_onclick() {
try {
if (window.top.calcFactorial == null) {
throw "This page is not loaded within the correct frameset";
};
if (document.form1.txtNum1.value == "") {
throw "!Please enter a value before you calculate its factorial";
};
if (isNaN(document.form1.txtNum1.value)) {
throw "!Please enter a valid number";
};
if (document.form1.txtNum1.value < 0) {
throw "!Please enter a positive number";
};
document.form1.txtResult.value = window.parent.calcFactorial(document.form1.txtNum1.value);
}
catch (exception) {
if (typeof(exception) == "string") {
if (exception.charAt(0) == "!") {
alert(exception.substr(1));
document.form1.txtNum1.focus();
document.form1.txtNum1.select();
} else {
alert(exception);
}
} else {
alert("The following error occurred " + exception.message);
}
}
}
</script>
</head>
<body>
<form action="" name="form1">
<input type="text" name="txtNum1" size="3" /> factorial is
<input type="text" name="txtResult" size="25" /><br />
<input type="button" value="Calculate Factorial" name="butCalculate" onclick="butCalculate_onclick()" />
</form>
</body>
</html>
我一直收到错误“此页面未加载到正确的框架集中”。
本书练习的目的是展示尝试捕捉投掷的方式。
由于
答案 0 :(得分:0)
好的,我的评论仍然非常相关,但我确实发现了问题:你实际上并没有提到父母,因为你需要一个iframe
。更改以下代码:
<frameset cols="100%,*">
<frame name="fraCalcFactorial" src="calcfactorial.html"></frame>
</frameset>
到此:
<iframe name="fraCalcFactorial" src="calcfactorial.html"></iframe>
现在window.top
可以访问子框架了!我会说实话,我不确定为什么这是因为我对框架集的了解非常有限,而且我忘记了多年前如何访问它们。
但严重的是,如果它教你使用<frameset>
来做事情,这听起来不是一本好书......我近20年来没见过那些!您最好的朋友和资源是Mozilla Developer Network
。我发现他们的代码得到了很好的解释,它包含了大量现代的,最新的网络!