方法一、
父窗口:
父窗口
function btn_onclick() {
window.open("HTMLPage2.html");
// alert(window.document.getElementById('btn').value);
}
子窗口:
子窗口
function ok() {
window.document.getElementById("tex").innerHTML = window.opener.parent.document.getElementById("txt").value;
//alert(window.document.getElementById('label').value);
}
window.onload= ok;
方法二、
父窗口
function main() {
window.open("HTMLPage2.html");
}
子窗口:
子窗口
function aa() {
form1.tex2.value = window.opener.parent.document.getElementById("text1").value;
}
aa();
方法三:
父窗口:
$(".Reply").click(function() {
var tel = $(this).attr('tel');
window.open("ReplyShort.aspx?textleng=" + tel, "回复短息", "Width=500,Height=260,Top=220,Left=220,channelmode=yes.scrollbars=ye");
});
子窗口:
前台只要一个文本框,id="mobile"
后台代码
if (Request.QueryString["textleng"].ToString().Trim() != null)
{
mobile.Value = Request.QueryString["textleng"].ToString().Trim();
}
详解:
1、第一种方法和第二种方法基本上没有多大的差异,主要的差异在于
window.document.getElementById("tex").innerHTML = window.opener.parent.document.getElementById("txt").value;
和
form1.tex2.value = window.opener.parent.document.getElementById("text1").value;
一种用Dom获取Id的值,一种是用form1对象下id获取值。
还有一点值得注意的是javascript的调用方法,不正确的调用方法会导致传值出错,
方法一中,在标签之间调用,用户请注意要用window.onload=方法名;(值得注意的是这里所调用的方法不需要括号)
方法二中,在标签之后调用,用户可以用方法一中的window.onload=方法名。也可直接调用在函数调用的后面自己写该函数方法()即可。
方法一方法二中获取父窗口的值传向子窗口支持各种写法。比如上面的获取id的值,还有可以用jquery获取对应的各种属性值。
2、方法一、方法二和方法三的区别
方法一的传值方式支持各种各样的传值,给传值对应的文本框等其他获取指定的值不会造成影响,适合于需要更改在进行处理的数据。而方法三基本上也支持各种各样的传值,但是方法三给传值对应的文本框等其他获取指定值造成修改无效的恶搞局面。
或许你并不明白这句话的意思,但是你可以试试,用此方法传值,然后修改该文本框的值,修改后获取文本框的值,进行数据插入或者更新,你会发现数据库的数据跟原始传值过来的文本框的内容不变,到这里你应该会觉得很郁闷,为什么会这样,内容不是已经改过了吗?这也是我一开始郁闷的地方。
经过多次的探讨发现,当你试着将已经更改的数据插入到数据库的时候,由于点击插入按钮时页面的重新加载导致所更改的值变成初始所传过来的值。所以导致数据的插入,数据的更新却没有改变到原始的数据。
这是本人在进行页面传值与数据更新,数据检测的过程中所遇到的问题,一开始纠结于不知道什么原因,最后经过努力的探讨才明白了其中的原因。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26481450/viewspace-741003/
,如需转载,请注明出处,否则将追究法律责任。