Frameset 框架下的子页面数据交互问题

frame 页面表单数据交互问题

    绝大部分的网站的界面都须通过frameset框架进行排版,以区分功能区,并给用户良好的体验。于是在做;这样的网页时,父子页面的数据交互,兄弟页面的数据交互是开发时必然要面临的问题。

    第一次做开发时,由于经验不足,在网上查询了许多资料并经过多次实验,我发现大多不可靠,最终找到了一种很合适的页面间数据交互的方法,觉得有必要记录一下,以警自己,示他人。

    frameset父框架前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>试题管理</title>
</head>
<frameset set rows="40px, *">
	<frame src="head.html" id="head" name="head"></frame>
	<frameset set cols="*, 90%" id="secondLayer">
		<frame src="createPaperNavigator.html" id="navigator" name="navigator"></frame>
		<frame src="producePaper.html" id="main" name="main"></frame>
	</frameset>
</frameset>
</html>

子页面“createPaperNavigator.html”代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>创建试卷导航栏</title>

<link rel="stylesheet" type="text/css" href="../../CSS/nav.css">
<link rel="stylesheet" type="text/css" href="../../font/iconfont.css">

</head>
<body>
	<div class="nav">
		<div class="nav-top">
			<div id="mini"
				style="border-bottom: 1px solid rgba(255, 255, 255, .1)">
				<img src="../../img/mini.png">
			</div>
		</div>
		<ul>
			<li class="nav-item"><a href="#" id="choice"><i
					class="my-icon nav-icon icon_1"></i><span>选择题</span><i
					class="my-icon nav-more"></i></a>

				<ul>
					<li><input type="text" id="choice_num"
						placeholder="请输入试卷中选择题的数量"></li>
				</ul>
			</li>
			<li class="nav-item"><a href="#" id="gap_fill"><i
					class="my-icon nav-icon icon_2"></i><span>填空题</span><i
					class="my-icon nav-more"></i></a>
					
					<ul>
					<li><input type="text" id="gap_fill_num"
						placeholder="请输入试卷中填空题的数量"></li>
				</ul>
			</li>

			<li class="nav-item"><a href="#" id="answerQues"><i
					class="my-icon nav-icon icon_3"></i><span>简答题</span><i
					class="my-icon nav-more"></i></a>
						<ul>
					<li><input type="text" id="answerQues_num"
						placeholder="请输入试卷中简答题的数量"></li>
				</ul>
					</li>
		</ul>
	</div>
	<div style="text-align: center;">
		<p>
	</div>

	<script type="text/javascript" src="../../JS/jquery.min.js"></script>
	<script type="text/javascript" src="../../JS/nav.js"></script>
	<script src="../../JS/jquery-3.2.1.min"></script>

	<script type="text/javascript">
		$(document).ready(function() {

		//定义各种题型的数量变量
		var choice_num = 0;
		var gap_fill_num = 0;
		var answerQues_num = 0;
		$("#choice_num").change(function() {
		var posInt_reg = /^[1-9]\d*$/;

		if (posInt_reg.test($("#choice_num").val().trim())) {
		choice_num = $("#choice_num").val().trim();	
		}
								
// 		alert(document.getElementById("choice_num").value.trim());
		});
		$("#gap_fill_num").change(function() {
		var posInt_reg = /^[1-9]\d*$/;
		if (posInt_reg.test($("#gap_fill_num").val().trim())) {
		gap_fill_num = $("#gap_fill_num").val().trim();
		}
// 		alert(gap_fill_num);
		});

		$("#answerQues_num").change(function() {
		var posInt_reg = /^[1-9]\d*$/;
		if (!posInt_reg.test($("#answerQues_num").val().trim())) {
		answerQues_num = $("#answerQues_num").val().trim();
		}
// 		alert(answerQues_num);
		});
					
		});
	</script>
</body>
</html>

子页面“producePaper.html”代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>TEST</title>
</head>
<body>
		<div id="textareaBlock">
			<textarea cols="100px" rows="50px" id="display_area">
			
			</textarea>
		</div>
	<input type="button" id="submit" value="提交">

</body>

<script src="../../JS/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
	$(document).ready(function() {
		var choice_num;
		var gap_fill_num;
		var answerQues_num;
		
// 兄弟框架间的引用 如果两个框架同为一个框架的子框架,
// 它们称为兄弟框架,可以通过父框架来实现互相引用,
// 例如一个页面包括2个子框架: 
// <frameset rows="50%,50%">      
// <frame src="1.html" name="frame1" />      
// <frame src="2.html" name="frame2" /> 
// </frameset> 
// 在frame1中可以使用如下语句来引用frame2: self.parent.frames["frame2"];
		var navigatorFrame = parent.document.getElementById("navigator").contentWindow;
		
		$("#submit").click(function(){
			choice_num = navigatorFrame.document.getElementById("choice_num").value;
				alert(choice_num);
// 				alert("somesthing");
		});
	});
</script>

</html>

    这里,我们在“main”frame中调用“navigator”中的表单值,于是使用这样的 两行代码:



就获取了ID为“navigator”页面的表单值。

本文展示的是同级页面表单数据的共享方法,父子页面的数据共享类似,请大家自己实践一下。


望每天进步一点,再见

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章