gpt4 book ai didi

javascript - 将许多表单输入值从子窗口传递到父窗口的更好方法

转载 作者:行者123 更新时间:2023-11-30 08:51:14 24 4
gpt4 key购买 nike

我有一个有一堆单选按钮的子窗口。我想将所有这些值发送到开启器窗口。

我通过将所有输入名称和值附加到 javascript 字符串来实现这一点。然后我使用 window.opener 属性将字符串分配给父窗口中的隐藏字段。

代码就像,

document.getElementById("Errnodata").innerHTML = "" ;  
var joinedArray = literal.join(", ");
window.opener.document.getElementById("myarray").value= joinedArray;
window.opener.getVolunteerDetails();
window.close();

所以这意味着 joinedArray 字符串的形式类似于 name1,value1,name2,value。有没有更好的方法可以将许多值传递给父窗口?或者任何惯用/接受的方式?

谢谢。

最佳答案

您有很多选择。您可以通过 window.opener 访问父窗口的 window 对象(如您所见)。子窗口的 window 对象对父窗口也是可用的,它是 window.open 的返回值。所以两人可以直接交谈。

这意味着你可以...

  1. ...直接将值分配给父级,或(理想情况下)分配给它为此目的在父级上可用的对象。

    在父级中:

    window.results = {};

    在 child 身上:

    opener.results.name = "value";
    opener.results.anotherName = "another value";
  2. ...或者让子窗口调用父窗口的函数:

    opener.callback(/*...values here...*/);

    ...传递单个值或对象等。

  3. ...或者让父窗口伸出并直接与子控件交互(但这会产生很多紧密耦合,我不推荐这样做):

    // Assuming you did `var child = window.open(/*....*/);`
    var value = child.document.getElementById("someId").value;

这是一个使用回调的例子:

家长:Live Copy | Live Source

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Child Callback - Parent Window</title>
</head>
<body>
<input type="button" id="btnOpen" value="Open Child Win">
<script>
(function() {
var child;

document.getElementById("btnOpen").onclick = function() {
if (!child) {
child = window.open("http://jsbin.com/ukuvaj/1");
}
};

window.callback = function(value) {
display("Got callback from child, value = " + value);
};

function display(msg) {
var p = document.createElement('p');
p.innerHTML = String(msg);
document.body.appendChild(p);
}
})();
</script>
</body>
</html>

child :Live Source

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Child Window</title>
</head>
<body>
<input type="text" id="textField" value="some value">
<br><input type="button" id="btnSend" value="Send to Parent">
<script>
(function() {
document.getElementById("btnSend").onclick = function() {
opener.callback(document.getElementById("textField").value);
};
})();
</script>
</body>
</html>

关于javascript - 将许多表单输入值从子窗口传递到父窗口的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17682025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com