#javascript #html #css
#javascript #HTML #css
Вопрос:
Я новичок, пытающийся использовать Javascript. Я хотел бы изменить цвет шрифта и семейство шрифтов с помощью события onclick (а также градиент фонового изображения, но я даже не могу догадаться, как получить к нему доступ). Я создал кнопку, которая при нажатии должна запускать spookFunction и изменять цвет шрифта в теле на оранжевый, а семейство шрифтов — на Google font Bangers. Я попытался создать скрипку, чтобы вы могли увидеть код (я впервые использую JSFiddle, поэтому я не уверен, как это работает): https://jsfiddle.net/Linnea_Borealis/u8n9ezhs/10 / Я вырезал несколько примеров кода, которые я нашел, просто чтобы посмотреть, будет ли это работать, и сравнить с моим собственным кодом:
Нажмите на меня, чтобы изменить цвет текста.
<script>
function myFunction() {
document.getElementById("demo").style.color = "red";
}
</script>
Эта часть работает нормально, а другая часть — нет. В чем разница?
Я заметил в VS Code, что «style» имеет другой цвет в «document.getElementById («welcome»).style.color =»red»», чем в «document.getElementsByTagName («body»).style.color =»orange»;» и «document.getElementsByTagName («body»).style.FontFamily=»Bangers», курсив;» Я неправильно использую getElementsByTagName ?
Кроме того, в JS Fiddle вокруг текста есть белый прямоугольник, который я не вижу, когда открываю html-файл в своем браузере… Почему? Я очень благодарен, если кто-нибудь может объяснить это простым способом для начинающих.
Ответ №1:
Белый прямоугольник — это ваше тело. Если вы добавите свой класс тела css background-color:black;
, вы сможете его увидеть. И другие ответы верны для getElementsByTagName .
Попробуйте это:
function myFunction() {
document.getElementById("demo").style.color = "red";
}
function spookFunction() {
document.getElementsByTagName("body")[0].style.color="orange";
document.getElementsByTagName("body")[0].style.fontFamily="Bangers, cursive";
document.getElementById("welcome").style.color="red"
}
html {
background-image: linear-gradient(#0099ff, white);
min-height: 100%;
}
body {
margin-left: 10%;
margin-right: 10%;
margin-top: 10%;
font-family: 'Lobster', cursive;
color: white;
background-color: black;
}
h1{ font-size: 50px; }
p {
font-size: 30px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Spook My Page</title>
<link rel="stylesheet" type="text/css" href="Style.css">
<link href="https://fonts.googleapis.com/css2?family=Bangersamp;family=Lobsteramp;display=swap"
rel="stylesheet">
</head>
<body>
<h1 id="welcome">Welcome Friend!</h1>
<p>To change the color scheme — Click the button below!</p>
<p id="demo" onclick="myFunction()">Click me to change my text color.</p>
<button type="button" onclick="spookFunction()">Click Me!
</button>
</body>
</html>
Ответ №2:
getElementsByTagName возвращает массив вместо одного элемента. Таким образом, вам нужно будет получить доступ к элементу, подобному этому getElementsByTagName(«body»)[0] . Надеюсь, это поможет.
Комментарии:
1. точно, и если есть несколько элементов с одним и тем же классом, это повлияет только на первый. Итак, JS нужна строка для циклического перебора всех элементов с одним и тем же классом, чтобы воздействовать на все.
Ответ №3:
function spookFunction() {
document.getElementsByTagName("BODY")[0].style.backgroundColor="orange";
document.getElementsByTagName("BODY")[0].style.fontFamily="Bangers,cursive";
document.getElementById("welcome").style.backgroundColor="red"}
Это должно выполнить задание, вы использовали неправильное имя переменной для backgroundColor, и оно не смогло найти тело, потому что document.getElementsByTagName(«BODY») возвращает массив тегов