题目:实现以下功能

1. 点击按钮“打开新窗口”,打开新的子页面,要求新窗口的大小为400px X 200px

2. 输入地址信息,点击“确定”按钮,关闭该页面

3. 将子页面中输入的地址信息,回传到父页面的地址信息文本栏位中

解:

事先准备:弄出来设置cookie和获取cookie两个函数。

function setCookie(name, value,times) {
var oDate = new Date();
document.cookie = name + '=' + value + ';experis=' + (oDate.getDate() + times);
} function getCookie() {
var str = document.cookie;
var arr = str.split(';');
var json_str = '({';
for (var i = 0; i < arr.length; i++) {
json_str +="'"+ arr[i].replace("=","':'")+"',";
}
json_str=json_str.substr(0, json_str.length - 1);
json_str += '})';
return eval(json_str);//将cookie信息以json方式返回
}

思路一:使用cookie,将地址信息存入cookie中,然后再重新打开父页面,让父页面渲染时加载cookie中的信息。

实现:父页面中事先写下获取cookie函数,判断是否有该cookie值,有就执行没有罢了,然后点击按钮 打开新窗口,open('子页面','name','width=400,height=200,left...top...');

点击确定按钮时执行设置cookie函数,window.open('父页面');然后window.close();

在open后打开的父页面顺利加载cookie

父页面代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
window.onload = function () {
var oBtn = document.getElementById('btn');
var otxt = document.getElementById('txt');
oBtn.onclick = function () {
window.open('cookie.htm', 'new_window', 'width=400,height=200,left=600,top=200');
};
}
</script>
</head>
<body>
<div>
<input type="button" value="点一下试试" id="btn" />
<input type="text" id="txt" style=" width:200px; height:30px" />
</div>
<script type="text/javascript">
var otxt = document.getElementById('txt');
if (document.cookie) {
otxt.value =getCookie()['address'] ;
}
</script>
</body>
</html>

子页面代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
window.onload = function () {
var oBtn = document.getElementById('btn');
var otxt = document.getElementById('txts');
oBtn.onclick = function () {
if (otxt.value.length > 0) {
setCookie('address','aaaaa',7);
window.open('HTMLpage.htm');
window.close();
}
else
alert('别闹');
};
};
</script>
</head>
<body>
<div>
<input type="text" id="txts" style=" width:200px; height:30px;" name="address" />
<input type="button" id="btn" value="确定" />
</div>
</body>
</html>

缺点:虽能满足该题目要求,但是需要重新打开父页面,不能让父页面无加载局部刷新。

思路二:子页面用GET方式提交数据到父页面,父页面截取url获取地址信息 (该方式比较简单,代码略过不表)

思路三:利用window对象的opener方法。该方法能够完全满足题目要求

父页面代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
window.onload = function () {
var oBtn = document.getElementById('btn');
var otxt = document.getElementById('txt');
oBtn.onclick = function () {
window.open('cookie.htm', 'new_window', 'width=400,height=200,left=600,top=200');
};
}
</script>
</head>
<body>
<div>
<input type="button" value="点一下试试" id="btn" />
<input type="text" id="txt" style=" width:200px; height:30px" />
</div>
</body>
</html>

子页面代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
window.onload = function () {
var oBtn = document.getElementById('btn');
var otxt = document.getElementById('txts');
oBtn.onclick = function () {
if (otxt.value.length > 0) {
window.opener.document.getElementById('txt').value = otxt.value;
window.close();
}
else
alert('别闹');
};
};
</script>
</head>
<body>
<div>
<input type="text" id="txts" style=" width:200px; height:30px;" name="address" />
<input type="button" id="btn" value="确定" />
</div>
</body>
</html>

一道有趣的javascript编程题的更多相关文章

  1. 一道有趣的for循环题

    一道有趣的for循环题 今天在复习js基础知识时发现了一个for循环的题,第一眼看到直接懵逼了,没想到for循环竟然还可以这样玩?涨姿势了. 题目是这样的 for(i=0, j=0; i<10, ...

  2. 汤姆大叔的6道javascript编程题题解

    看汤姆大叔的博文,其中有篇(猛戳这里)的最后有6道编程题,于是我也试试,大家都可以先试试. 1.找出数字数组中最大的元素(使用Math.max函数) var a = [1, 2, 3, 6, 5, 4 ...

  3. JavaScript编程题(含腾讯2016校招题)

    作者:ManfredHu 链接:http://www.manfredhu.com/2016/04/02/15-veryGoodForUsing/ 声明:版权所有,转载请保留本段信息,否则请不要转载 几 ...

  4. 自家人不认识自家人——考你一道有趣的Javascript小题目

    今天的内容很简单,给大家分享一个有趣的Javascript小题目. 题目很简单,就是填空: var a = ______; var b = a; alert(a==b); // alert " ...

  5. 一道有趣的golang排错题

    很久没写博客了,不得不说go语言爱好者周刊是个宝贝,本来想随便看看打发时间的,没想到一下子给了我久违的灵感. go语言爱好者周刊78期出了一道非常有意思的题目. 我们来看看题目.先给出如下的代码: p ...

  6. C#中一道关于多线程的编程题

    题目的意思是这样的:让两个线程A和B将自己的ID轮番写入一个文件中,每个线程重复十次写入后执行一个回调函数,说“I'm OK”,就这样.我是一名QA,不是开发,出于兴趣报考了公司的C#课程考试,多线程 ...

  7. JavaScript编程题(一)

    使用Javascript脚板输出如图所示的效果页面: 使用document.write()输出水平线 使用循环控制每个水平线的长度 答案:<!doctype html> <html ...

  8. 去哪儿网2017校招在线笔试(前端工程师)编程题及JavaScript代码

    编程题很简单.整个试卷结构为: 一.问答题: 对前端的理解,了解哪些框架库? 二.在线编程题:身份证分组 如下第一道:身份证分组 三.在线编程题:身份证分组.统计字符.酒店价格(三选二) 如下第二三四 ...

  9. JavaScript数组基础编程题归纳

    之前的随笔"JavaScript中数组类型的属性和方法"中有介绍很多数组类型的方法,但都是一些理论.最近在练习在线编程题,发现自己还是习惯于用常规的循环来答题,对于数组的方法的使用 ...

随机推荐

  1. book publisher and study

    http://www.apress.com/ https://pragprog.com/ https://www.packtpub.com/ http://www.howzhi.com/

  2. Knockout.Js学习目录

    1.Knockout.Js(简介) 2.Knockout.Js(监控属性Observables) 3.Knockout.Js(属性绑定) 4.Knockout.Js(事件绑定) 5.Knockout. ...

  3. @property @synthesize的含义以及误区。

    @property的作用是定义属性,声明getter,setter方法.(注意:属性不是变量) @synthesize的作用是实现属性的,如getter,setter方法. 在声明属性的情况下如果重写 ...

  4. 消息点击事件的响应链---hitTest:withEvent:方法

    *当用户点击屏幕时,会产生一个触摸事件,系统会将触摸事件加入到 UIApplication管理事件队里中 *UIApplication 会从事件队列中取出最前面的事件进行分发以便处理,通常,先发送事件 ...

  5. responsive menu

    http://responsive-nav.com/#instructions https://github.com/viljamis/responsive-nav.js http://tympanu ...

  6. Oracle数据文件在open状态被删除的恢复记录

    1.查看当前状态: SQL> select status from v$instance; STATUS------------OPEN SQL> show parameter name; ...

  7. WPF——数据绑定(一)什么是数据绑定

    注意:本人初学WPF,文中可能有表达或者技术性问题,欢迎指正!谢谢! 一:什么是数据绑定? “Windows Presentation Foundation (WPF) 数据绑定为应用程序提供了一种简 ...

  8. vtune 不能查看pg的源代码

    在编译的时候,要加enable-debug 选项 并且如果之前有没有加的话,一定要make clean

  9. cnblogs体验

    用博客园可以让我更好的关注我们班同学的情况,通过关注他们,浏览他们发布的博客,学习到了很 多,比如不同的设计思想,良好的变成习惯,变量命名,缩进,注释等,而且自己不会的,可以帮助自己 有一些想法,是自 ...

  10. 遗传学详解及Matlab算法实现

    遗传学算法概述 从之前转载的博客<非常好的理解遗传算法的例子>中可以知道,遗传学算法主要有6个步骤: 1. 个体编码 2. 初始群体 3. 适应度计算 4. 选择运算 5. 交叉运算 6. ...