作者Angelliya (不知...)
看板Ajax
标题[ js ] window.open母视窗如何赋值给子视窗与执行函式?
时间Sun Jan 2 08:26:13 2011
试做了一个Demo
http://tinyurl.com/38awpzf
母视窗:test1.html
子视窗:test2.html
点了母视窗页面上的按钮後,用window.open开了子视窗
有正确把值传给了子视窗面里的textarea
但如果要由母视窗传变数到子视窗的变数
或是由母视窗执行子视窗的函式该如何做呢?
PassForm: 视窗名称
Agrs : 变数
PassForm.document.getElementById("Text1").value = Agrs;
//正确可行
PassForm.document.testValue = Agrs;
PassForm.document.testFunction();
//这两项好像都失败了
完整JS如下
母视窗:
var TestCount = 0;
var Form;
function PassValueToForm(PassForm, Agrs) {
if ( PassForm.document.getElementById("Text1")) {
PassForm.document.getElementById("Text1").value = Agrs;
PassForm.document.testValue = Agrs;
PassForm.document.testFunction();
} else {
if (TestCount <= 10) {
setTimeout(function() { PassValueToForm(InForm, Agrs); }, 1000);
} else {
alert("失败");
}
}
}
//按钮事件:
function Button2_onclick() {
TestCount = 0;
Form = window.open("test2.html",name,'height=300,width=500');
setTimeout(function() {
PassValueToForm(Form, 'toTest2Value');
}, 1000);
}
子视窗:
var testValue = '20110102'; //测试用的变数,也是希望被改变的变数
//两个测试的Function
function testFunction(){
alert("test2 Say Hi");
}
function testFunction2(){
alert(testValue);
}
查了一阵子,不太清楚方向...
不知道是不能这样执行
或是要用其他方法?(例如cookie)
麻烦了...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.165.26
※ 编辑: Angelliya 来自: 114.32.165.26 (01/02 08:27)
※ 编辑: Angelliya 来自: 114.32.165.26 (01/02 08:27)
1F:→ sk1765:只有一行错误 PassForm.document.testFunction(); 改成 01/02 10:36
2F:→ sk1765:PassForm.testFunction(); function物件都在window物件下 01/02 10:37
3F:→ sk1765:不在 document下 所以当你去用setTimeout clousure时 01/02 10:38
4F:→ sk1765:主视窗的那一行出错了 造成後面的setTimeOut都没做 01/02 10:39
5F:→ sk1765:PassForm.document.testValue = Agrs; 也要改 01/02 10:52
6F:→ Angelliya:成功了...非常谢谢回答与注解^^ 01/02 14:29