#javascript #html
#javascript #HTML
Вопрос:
В консоли я получаю следующие типы ошибок:
Ошибка ссылки: недопустимое присвоение левой части
Ошибка ссылки: changeButtonOnMouseOver не определена
Вот мой код:
<!DOCTYPE html>
<html>
<body>
<br />
<br />
<br />
<br />
<script>
function changeButtonOnMouseOver()
{
document.getElementById("btn").style.background-color = "#00806f";
document.getElementById("btn").style.cursor = "pointer";
}
function changeButtonOnClick()
{
document.getElementById("btn").style.box-shadow = "none";
document.getElementById("btn").style.top = "5px";
}
function changeButtonOnMouseOut()
{
document.getElementById("btn").style.border-radius = "15px";
document.getElementById("btn").style.background-color = "#009682";
document.getElementById("btn").style.box-shadow = "0 5px 0 #00332c";
document.getElementById("btn").style.color = "white";
document.getElementById("btn").style.cursor = "auto";
document.getElementById("btn").style.padding = "1em 1.5em";
document.getElementById("btn").style.position = "relative";
document.getElementById("btn").style.text-align = "center";
document.getElementById("btn").style.text-decoration = "none";
document.getElementById("btn").style.font-size = "x-large";
document.getElementById("btn").style.font-weight = "800";
document.getElementById("btn").style.outline = "none";
document.getElementById("btn").style.border = "none";
}
</script>
<a id="btn" href="#" onmouseover="changeButtonOnMouseOver()" onclick="changeButtonOnClick()" onmouseout="changeButtonOnMouseOut()"
style="border-radius: 15px;
background-color: #009682;
box-shadow: 0 5px 0 #00332c;
color: white;
padding: 1em 1.5em;
position: relative;
text-align: center;
text-decoration: none;
font-size: x-large;
font-weight: 800;
outline: none;
border: none;" >
Zur Anmeldung</a>
</body>
</html>
Я сделал ссылку похожей на кнопку, и я хочу изменить стиль с помощью функций javascript для событий onmouseover или onclick, чтобы это выглядело так, как будто вы нажимаете кнопку при нажатии на ссылку, но я не знаю, почему это не работает.
Комментарии:
1. Вы должны использовать camelCase property name в JavaScript……
2. Рассматривали ли вы возможность использования CSS с использованием состояний anchors?
:hover
,:focus
и:active
например.3. @wbarton Я не могу использовать CSS. Я могу онлайн изменить стиль встроенным способом или через JavaScript.
Ответ №1:
Вы должны использовать имя свойства camelCase для style в JavaScript:
function changeButtonOnMouseOver(){
document.getElementById("btn").style.backgroundColor = "#00806f";
document.getElementById("btn").style.cursor = "pointer";
}
function changeButtonOnClick(){
document.getElementById("btn").style.boxShadow = "none";
document.getElementById("btn").style.top = "5px";
}
function changeButtonOnMouseOut(){
document.getElementById("btn").style.borderRadius = "15px";
document.getElementById("btn").style.backgroundColor = "#009682";
document.getElementById("btn").style.boxShadow = "0 5px 0 #00332c";
document.getElementById("btn").style.color = "white";
document.getElementById("btn").style.cursor = "auto";
document.getElementById("btn").style.padding = "1em 1.5em";
document.getElementById("btn").style.position = "relative";
document.getElementById("btn").style.textAlign = "center";
document.getElementById("btn").style.textDecoration = "none";
document.getElementById("btn").style.fontSize = "x-large";
document.getElementById("btn").style.fontWeight = "800";
document.getElementById("btn").style.outline = "none";
document.getElementById("btn").style.border = "none";
}
<a id="btn" href="#" onmouseover="changeButtonOnMouseOver()" onclick="changeButtonOnClick()" onmouseout="changeButtonOnMouseOut()" style="border-radius: 15px;background-color: #009682;box-shadow: 0 5px 0 #00332c;color: white;padding: 1em 1.5em;position: relative;text-align: center;text-decoration: none;font-size: x-large;font-weight: 800;outline: none;border: none;">Zur Anmeldung</a>
Вы можете добиться того же с помощью чистого CSS:
function changeButtonOnClick(){
document.getElementById("btn").style.boxShadow = "none";
document.getElementById("btn").style.top = "5px";
}
#btn, #btn:not(:hover){
border-radius: 15px;
background-color: #009682;
box-shadow: 0 5px 0 #00332c;
color: white;
padding: 1em 1.5em;
position: relative;
text-align: center;
text-decoration: none;
font-size: x-large;
font-weight: 800;
outline: none;
border: none;
}
#btn:hover{
background-color: #00806f;
cursor: pointer;
}
#btn:not( :hover ){
border-radius: 15px;
background-color: #009682;
box-shadow: 0 5px 0 #00332c;
color: white;
padding: 1em 1.5em;
position: relative;
text-align: center;
text-decoration: none;
font-size: x-large;
font-weight: 800;
outline: none;
border: none;
}
<a id="btn" href="#" onclick="changeButtonOnClick()" >
Zur Anmeldung</a>
Комментарии:
1. Я не могу использовать классы, поэтому я не могу использовать: #btn{ border-radius: 15px; background-color: #009682; box-shadow: 0 5px 0 #00332c; цвет: белый; padding: 1em 1.5em; position: относительный; text-align: center; text-decoration: нет; font-size: x-large; font-weight: 800; outline: нет; border: нет; }
2. Добавление начального стиля inline уже работает. Что не работает, так это изменение его с помощью функций JavaScript для событий.
3. @kachris, первое решение в ответе показывает, что оно работает с использованием JavaScript….
Ответ №2:
Вы должны использовать camelCase для свойств style
. Просто удалите -
и сделайте букву после -
заглавной буквы, например background-color => backgroundColor
. Это будет то же самое для for -
. Например:
background-color => backgroundColor
border-left-width => borderLeftWidth
Смотрите в стороне о правилах именования переменных.
Вы можете вызывать переменную практически как угодно, но есть ограничения. Как правило, вы должны придерживаться только использования латинских символов (0-9, a-z, A-Z) и символа подчеркивания
Вам не следует использовать другие символы, потому что они могут вызвать ошибки или быть трудными для понимания международной аудиторией
Комментарии:
1. Я уже изменил часть JavaScript. Он по-прежнему не работает.
Ответ №3:
Ваш скрипт загружен еще до того, как идентификатор btn появится в DOM. Вы должны поместить свой скрипт после объявления идентификатора или настроить загрузку скрипта после завершения сборки DOM
Комментарии:
1. Я пробовал размещать часть сценария как до, так и после ссылки. Оба варианта не работают.
Ответ №4:
Поскольку вы не можете добавлять / редактировать CSS и использовать классы. Можете ли вы создать новый style
узел, содержащий требуемые стили, с помощью JS?
const styleNode = document.createElement('style');
styleNode.type = 'text/css';
const cssStyles = `
#btn {
border-radius: 15px;
background-color: #009682;
box-shadow: 0 5px 0 #00332c;
color: white;
padding: 1em 1.5em;
position: relative;
text-align: center;
text-decoration: none;
font-size: x-large;
font-weight: 800;
outline: none;
border: none;
}
#btn:hover{
background-color: #00806f;
cursor: pointer;
}
#btn:active {
box-shadow: none;
top: 5px;
}
`;
styleNode.appendChild(document.createTextNode(cssStyles));
document.getElementsByTagName('head')[0].appendChild(styleNode);
<a id="btn" href="#">Zur Anmeldung</a>