Привет, кто-нибудь может мне помочь, как я могу изменить цвет значка в зависимости от того, что я выбираю:
<!DOCTYPE html>
<html>
<title>W3.CSS</title>
<meta name = "viewport" content = "width=device-width, initial-scale=1">
<link rel = "stylesheet" href = "https://www.w3schools.com/w3css/4/w3.css">
<link href = "https://fonts.googleapis.com/icon?family=Material+Icons" rel = "stylesheet">
<style>
.btn-for-device{
float: left;
background: transparent;
}
</style>
<body>
<button class = "w3-bar-item w3-button btn-for-device" onclick = "openCity('London')"><i class = "material-icons laptop-icon w3-orange">laptop</i></button>
<button class = "w3-bar-item w3-button btn-for-device " onclick = "openCity('Paris')"><i class = "material-icons laptop-icon ">smartphone</i></button>
<div id = "London" class = "w3-container city">
<h2>London</h2>
<p>London is the capital city of England.</p>
</div>
<div id = "Paris" class = "w3-container city" style = "display:none">
<h2>Paris</h2>
<p>Paris is the capital of France.</p>
</div>
<div id = "Tokyo" class = "w3-container city" style = "display:none">
<h2>Tokyo</h2>
<p>Tokyo is the capital of Japan.</p>
</div>
<script>
function openCity(cityName) {
var i;
var x = document.getElementsByClassName("city");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
document.getElementById(cityName).style.display = "block";
}
</script>
</body>
</html>Этот оранжевый фон, который я хочу иметь, когда я нажимаю на телефон, чтобы сделать его оранжевым, а для ноутбука - удалить, в зависимости от того, какой из них активен.
Разве вы не можете просто добавить .style.backgroundColor в событие onClick для выбранного элемента?
Я не знаю, насколько я новичок в программировании
Знаете ли вы эту особенность SO, с которой вы можете принять любой правильный ответ на свой вопрос? @Lila



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Простой. просто обновите свою функцию, чтобы использовать this (который будет относиться к вашей кнопке) в качестве параметра и используйте это, чтобы изменить цвет фона, удаляя его с каждой другой кнопки: Вот пример:
function openCity (button, cityName) {
var i;
var x = document.getElementsByClassName("city");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
document.getElementById(cityName).style.display = "block";
//remove orange background from every button
var buttons = document.getElementsByClassName ('w3-button')
for (var j = 0; j < buttons.length; j++) {
//find <i> tag of current button (always the first one -> [0])
var i_tag = buttons[j].getElementsByTagName('i')[0];
//remove class 'w3-orange' (background)
i_tag.classList.remove ("w3-orange");
}
//find first <i> tag of clicked button (parameter 'button' of this function)
var i_tag = button.getElementsByTagName('i')[0];
//set orange background for selected buttons <i> tag
i_tag.classList.add ("w3-orange");
}.btn-for-device{
float: left;
background: transparent;
}<link rel = "stylesheet" href = "https://www.w3schools.com/w3css/4/w3.css">
<link href = "https://fonts.googleapis.com/icon?family=Material+Icons" rel = "stylesheet">
<button class = "w3-bar-item w3-button btn-for-device" onclick = "openCity(this, 'London')"><i class = "material-icons laptop-icon w3-orange">laptop</i></button>
<button class = "w3-bar-item w3-button btn-for-device " onclick = "openCity(this, 'Paris')"><i class = "material-icons laptop-icon ">smartphone</i></button>
<div id = "London" class = "w3-container city">
<h2>London</h2>
<p>London is the capital city of England.</p>
</div>
<div id = "Paris" class = "w3-container city" style = "display:none">
<h2>Paris</h2>
<p>Paris is the capital of France.</p>
</div>
<div id = "Tokyo" class = "w3-container city" style = "display:none">
<h2>Tokyo</h2>
<p>Tokyo is the capital of Japan.</p>
</div>Вы должны заменить класс w3-orange на активный значок независимо от того, какой метод вы используете.
Ниже приведен один из примеров, но не единственный способ сделать это.
Вы можете попытаться выяснить, каким способом вы хотите воспользоваться.
<!DOCTYPE html>
<html>
<title>W3.CSS</title>
<meta name = "viewport" content = "width=device-width, initial-scale=1">
<link rel = "stylesheet" href = "https://www.w3schools.com/w3css/4/w3.css">
<link href = "https://fonts.googleapis.com/icon?family=Material+Icons" rel = "stylesheet">
<style>
.btn-for-device{
float: left;
background: transparent;
}
</style>
<body>
<button class = "w3-bar-item w3-button btn-for-device" onclick = "openCity('London')"><i class = "material-icons laptop-icon w3-orange" id = "icon-London">laptop</i></button>
<button class = "w3-bar-item w3-button btn-for-device " onclick = "openCity('Paris')"><i class = "material-icons laptop-icon" id = "icon-Paris">smartphone</i></button>
<div id = "London" class = "w3-container city">
<h2>London</h2>
<p>London is the capital city of England.</p>
</div>
<div id = "Paris" class = "w3-container city" style = "display:none">
<h2>Paris</h2>
<p>Paris is the capital of France.</p>
</div>
<div id = "Tokyo" class = "w3-container city" style = "display:none">
<h2>Tokyo</h2>
<p>Tokyo is the capital of Japan.</p>
</div>
<script>
function openCity(cityName) {
var i;
var x = document.getElementsByClassName("city");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
var y = document.getElementsByClassName("laptop-icon");
for (i = 0; i < y.length; i++) {
y[i].classList.remove('w3-orange');
}
var z = document.getElementById('icon-'+cityName);
z.classList.add('w3-orange');
document.getElementById(cityName).style.display = "block";
}
</script>
</body>
</html>
Где вы указываете свойство оранжевого фона?