Проблема в том, что вы используете вещи, которых не существует
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'
.
Уже было что-то подобное, потратил почти час, чтобы найти его: стр.