首页 > 解决方案 > 我在文件 .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.write

解决方案


问题是:你使用了一些不存在的东西

document.getElementById()返回一个Element并且没有属性documentElement即使有它也会让你回到原始文档)。

所以:

document.getElementById("demo").document === undefined

这就是你的错误所说的。


但是删除它是不够的,因为没有Element.write()

解决方案是使用Element.innerHTMLElement.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。


推荐阅读