Hi,
I want to have a few buttons for a webserver on a microcontroller. I want the buttons to change color once they have been clicked. Green for on and red for off. For now I used an extra button.
How can I link the element to the “but” variable I already created? I want to automatically link it to the button I cliked.
This is my code so far:
<!DOCTYPE html>
<html>
<body>
<h2>Turning Buttons ON/OFF</h2>
<p id="demo"></p>
<p id="demo2"></p>
<button id="but" name="but1" onclick="clickBut(this.name);">Button1</button>
<button id="but" name="but2" onclick="clickBut(this.name);">Button2</button>
<button id="but" name="but3" onclick="clickBut(this.name);">Button3</button>
<br>
<br>
<button id="but on">ON/OFF</button>
<script>
// Create an object of the buttons
const buttons = [
{ name: "but1",
prevState: false,
curState: false,
colState: "OFF"
},
{ name: "but2",
prevState: false,
curState: false,
colState: "OFF"
},
{ name: "but3",
prevState: false,
curState: false,
colState: "OFF"
}];
// Set all buttons OFF at start of script
const x = document.getElementsByTagName("button");
for( i = 0; i< x.length; i++ ){
x[i].style.background = "#EC6666";
}
// Function to define the clicked button and change the state of the clicked button
function clickBut(but){
// Display the copied name of the button
document.getElementById("demo").innerHTML = but;
// Temporary variable button stores name of the clicked button.
let button = buttons.find(buttons => buttons.name == but);
if(button.prevState == false && button.curState == false)
{
button.curState = !button.prevState;
button.prevState = !button.prevState;
button.colState = "ON";
}
else if(button.prevState == true && button.curState == true)
{
button.curState = !button.prevState;
button.prevState = !button.prevState;
button.colState = "OFF";
}
else if(button.prevState == true && button.curState == false)
{
button.curState = !button.prevState;
button.prevState = !button.prevState;
}
else // prevState false, curState true
{
button.curState = !button.prevState;
button.prevState = !button.prevState;
}
// Display the state of the clicked button
document.getElementById("demo2").innerHTML = "Name:" + button.name + " Previous State:" + button.prevState +" Current State:" + button.curState + " Color State:" + button.colState;
/*
if(button.colState == "OFF")
{
document.getElementById("but on").style.background = "#EC6666";
}
else document.getElementById("but on").style.background = "#7CEC66";
*/
switch(button.colState)
{
case "OFF":
const btn = document.querySelector("button");
document.getElementById("but on").style.background = "#EC6666";
break;
case "ON":
document.getElementById("but on").style.background = "#7CEC66";
break;
}
}
</script>
</body>
</html>