这是一个问题。我试图在一个函数中创建新窗口并使用document.write更改其内容,但它不起作用。
这是一个按钮:
<button class="btn" type="button" onclick="showInformation()">send message</button>
这是一个功能:
function showInformation() {
var opened_window = window.open("", "opened_window", "width=300,height=300,menubar=no,location=no,resizable=no,scrollbars=no,status=no");
opened_window.window.onload = function() {
opened_window.document.write(
"NAME: " + document.getElementById("inf_name").value
+ "<br/>EMAIL: " + document.getElementById("inf_email").value
+ "<br/>SUBJECT: " + document.getElementById("inf_subject").value
+ "<br/>MESSAGE: " + document.getElementById("inf_textarea").value);
}
}
但是当我点击按钮时,打开的窗口总是空的。我试图只做opened_window.document.onload
和opened_window.onload
,但没有任何改变。 Chrome控制台中没有错误。它只是不起作用。
但是,当我在函数(global var)外面放置window.open并在函数中只留下opened_window.document.write
时,它开始使用预打开的窗口。
我不明白为什么它不想在功能上工作。如何在一个函数中打开新窗口并更改其内容而不使用全局变量?感谢。
答案 0 :(得分:0)
您需要在声明后写下窗口的内容。 您可以在此处查看示例:https://jsfiddle.net/andersoncontreira/xpvt214o/4253/
来源示例:
window.showInformation = function() {
var opened_window = window.open("", "opened_window", "width=300,height=300,menubar=no,location=no,resizable=no,scrollbars=no,status=no");
var d = document.createElement("div");
var name = (document.getElementById("inf_name") != null)? ocument.getElementById("inf_name").value : "Não informado";
var email = "Não informado";
var subject = "Não informado";
var text = "Não informado";
var html = "NAME: " + name
+ "<br/>EMAIL: " + email
+ "<br/>SUBJECT: " + subject
+ "<br/>MESSAGE: " + text;
d.innerHTML = html;
opened_window.document.body.appendChild(d)
}