#javascript #html #css
#javascript #HTML #css
Вопрос:
Я пытаюсь запустить скрипт, не удаляя стиль CSS.
Например, здесь я хочу, чтобы фон оставался синим, когда отображается случайное число.
function myFunc() {
document.write(Math.floor(Math.random() * 999));
}
body {
background-color: blue;
}
<button onclick="myFunc()">Get random num</button>
Комментарии:
1. Да, при таком использовании document.write() очищает весь документ. Что является основной причиной не использовать его. Добавьте элемент вывода like
<pre id="output"></pre>
, затем используйтеdocument.getElementById('output').innerText = x;
вместо
Ответ №1:
Поместите значение внутри другого элемента вместо создания нового документа.
Попробуйте:
let s = document.createElement("span");
s.innerHtml = Math.floor(Math.random()*999);
body.appendChild(s);
Редактировать:
Я не видел, чтобы @Chris G ответил на ваш вопрос, но здесь немного другой подход с созданием нового элемента для каждого случайного вместо его замены. Я думаю, его ответ подходит вам лучше.
Ответ №2:
это не очень хорошая практика
Вы можете попробовать это
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Test</title>
<style>
body{
background-color: blue;
}
</style>
</head>
<body>
<p id="text"> </p>
<button onclick="myFunc()">Get random num</button>
<script>
function myFunc(){
document.getElementById("text").innerHTML=( Math.floor(Math.random()*999));
}
</script>
</body>
</html>
Комментарии:
1. Поскольку вы говорите о хорошей практике (и вы правы, document.write не является хорошей практикой), лучше использовать
.innerText
вместо.innerHTML
, если вы не добавляете никакой разметки, как в вашем случае. Кстати, ваш выбор цвета нечитаем. Как насчетbackground-color: wheat;
?
Ответ №3:
Да, как только вы нажмете на кнопку, ваш html-код изменится на:
<html><head></head><body>934</body></html>
Он также удаляет стиль.
Согласно ссылке
Ответ №4:
Да, это так. Это потому document.write()
, что перезаписывает все style
link
элементы и, которые могут присутствовать в документе. document.write()
полностью перезаписывает все в документе.
Пример:
function doIt() {
document.write('text')
doSomethingElse() // Will not get executed since the script tags have been removed
}
<button onclick='doIt()'>Use document.write</button>