document.write - 我在文件 .write 中加载一个简单的 .js 文件时发现错误?
问题描述
我写了一个代码,在文档中发现了一个错误。写怎么办?
代码是
<!DOCTYPE html>
<html>
<head>
<script>
function myFunction() {
document.getElementById("demo").document.write=('hi');
}
</script>
</head>
<body>
<h2>JavaScript in Head</h2>
<p id="demo"></p>
<button type="button" onclick="myFunction()">Try it</button>
</body>
</html>
这是错误
Uncaught TypeError: Cannot set property 'write' of undefined
at myFunction (test1.html:6)
at HTMLButtonElement.onclick (test1.html:16)
myFunction @ test1.html:6
onclick @ test1.html:16
帮帮我!
解决方案
问题是:你使用了一些不存在的东西
document.getElementById()
返回一个Element
并且没有属性document
(Element
即使有它也会让你回到原始文档)。
所以:
document.getElementById("demo").document === undefined
这就是你的错误所说的。
但是删除它是不够的,因为没有Element.write()
解决方案是使用Element.innerHTML
或Element.textContent
用作普通字符串。两者之间的区别在于innerHTML
允许您编写将呈现的 HTML 标记,而textContent
转义 HTML 标记以便按原样打印源中的字符串。
innerHTML
和的例子textContent
:
function myFunction1() {
document.getElementById("demoTextContent").textContent = 'hi';
document.getElementById("demoInnerHTML").innerHTML = 'hi';
}
function myFunction2() {
content = document.getElementById("demoTextContent").textContent
document.getElementById("demoTextContent").textContent = content + 'hi';
// these to line can also be written as
// document.getElementById("demoTextContent").textContent += 'hi';
content = document.getElementById("demoInnerHTML").innerHTML
document.getElementById("demoInnerHTML").innerHTML = content + 'hi';
// these to line can also be written as
// document.getElementById("demoInnerHTML").innerHTML += 'hi';
}
function myFunction3() {
document.getElementById("demoTextContent").textContent = '<span style="background-color:cyan;">hi</span>';
document.getElementById("demoInnerHTML").innerHTML = '<span style="background-color:cyan;">hi</span>';
}
#demoTextContent::before {content: "textContent: ";}
#demoInnerHTML::before{content:"innerHTML: ";}
<h2>JavaScript in Head</h2>
<p id="demoTextContent"></p>
<p id="demoInnerHTML"></p>
<button type="button" onclick="myFunction1()">Try replace text</button>
<button type="button" onclick="myFunction2()">Try append</button>
<button type="button" onclick="myFunction3()">Try replace by html code</button>
你也写了
write=('hi')
这=
可能是一个错字,但JavaScript
会在write = ('hi')
稍后翻译为write = 'hi'
.
已经有类似的东西了,花了将近一个小时才找到它:p。
推荐阅读
- python - 弹性搜索查询从 regexp 输入参数中查找列表中值的完全匹配
- javascript - 在 vue.js 中显示原始图像内容类型
- ruby-on-rails-5 - ActiveRecord 生成条件 SQL
- java - java gradle 找不到要编译的github仓库
- sqlite - sqlite julianday 添加秒数的结果不正确
- javascript - 如何设置特定滑块的状态?
- c# - uwp - '应用程序调用了一个为不同线程编组的接口
- javascript - 按下时面板中可折叠下拉列表中的选项未隐藏?
- office365 - 为什么在查询用于消息跟踪的报告 Web 服务 O365 API 时出现“找不到资源”?
- vue.js - 在 VueJs 的对象中添加新属性时如何触发更改?