我有一个简单的javascript函数,它将使用document.write
编写函数外部的变量值并调用该函数。但是,代码不起作用:
var name = 'guru';
function type () {
document.write = name;
}
然后我尝试返回document.write
。但是,这也行不通。
var name = 'guru';
function type () {
return document.write = name;
}
type();
在这段代码中,我只返回变量并在函数外部使用document.write
。这很有效。
var name = 'guru';
function type () {
return name;
}
document.write = type();
为什么会这样?有人可以向我解释一下吗?
修改
此处的代码在firebug中不起作用,因为HTML5文档之外的firebug不会将document.write
识别为函数,请参阅图像中的错误。那就是如果你启动 firebug 并运行它并不起作用,但是如果它在HTML DOM中运行则这是一个错误,这是一个错误,或者这是它的工作方式。
答案 0 :(得分:3)
你不应该使用document.write
,但如果绝对必须:
var writeSomething = function (message) {
document.write(message);
}
如果您正在尝试调试,我建议您使用console.log
。它受到所有现代浏览器的支持,并且更有用(它允许您检查对象,数组等)。 document.write
的问题在于它会破坏当前文档以写入新信息(请参阅结尾处的注释)。
以下是此功能的使用示例:
var writeSomething = function (message) {
document.write(message);
}
document.getElementById("myButton").onclick = function () {
var message = document.getElementById("myMessage").value;
writeSomething(message);
}
<button id="myButton">click me</button>
<input id="myMessage" placeholder="type message here">
来自MDN的
关于为什么document.write
是否禁止:
注意:当
document.write
写入文档流时,在已关闭(已加载)的文档上调用document.write
会自动调用document.open
which will clear the document。
TL;博士?像瘟疫一样避免document.write
。
答案 1 :(得分:2)
document.write
是一个功能。
语法如下:
document.write(exp1,exp2,exp3,...)
参数是可选的。可以列出多个参数,它们将按发生顺序附加到文档
答案 2 :(得分:2)
document.write
是function
,您需要call
这样:
var myHtml = "<html><head></head><body><div><span>Hello World!</span></div></body></html>";
document.write(myHtml);
答案 3 :(得分:2)
一个。
function type() {
var name = 'guru';
document.write (name);
}
乙
var name = 'guru';
function type( text ) {
document.write(text);
}
type( name );
你这样做了。看了一次,它可以帮助你站稳脚跟。
答案 4 :(得分:2)
答案 5 :(得分:2)
根据document.write syntax,您应该传递一个将是实际DOM字符串的参数。
通过
function type() {
return name;
}
document.write = type();
您实际上是否覆盖了原始document.write
功能。现在,如果您致电document.write('foo')
,您将获得Uncaught TypeError: document.write is not a function
。
然而,使用document.write
的正确方法可能是:
document.write("<h1>Foo</h1>");