Estoy tratando de hacer una función en la que cambio el color de fondo al color que se ingresa. Parece que la función funciona pero solo cambia a amarillo. Me lleva a creer que hay algo mal con las declaraciones if else, pero no puedo resolverlo.
var colore = document.getElementById("colors"); function changecolor() { if (colore = "yellow"){ document.body.style.backgroundColor = "yellow"; }else if (colore = "blue"){ document.body.style.backgroundColor = "blue"; }else if (colore = "green"){ document.body.style.backgroundColor = "green"; }else if (colore = "black"){ document.body.style.backgroundColor = "black"; }else {document.getElementById("error").innerHTML = "Enter a Valid Color";} }Su código tiene algunos errores que he solucionado y los detalles se encuentran a continuación
input , debe acceder a .value como document.getElementById("colors").value=== en su condición para comparar. Single = es un operador de asignación, y su código solo asignaba amarillo cada vez. Lea también ¿Qué operador igual (== vs ===) debe usarse en las comparaciones de JavaScript?Código de trabajo a continuación
function changecolor() { var colore = document.getElementById("colors").value; document.getElementById("error").innerHTML=""; // remove existing error if (colore === "yellow") { document.body.style.backgroundColor = "yellow"; } else if (colore === "blue") { document.body.style.backgroundColor = "blue"; } else if (colore === "green") { document.body.style.backgroundColor = "green"; } else if (colore === "black") { document.body.style.backgroundColor = "black"; } else { document.getElementById("error").innerHTML = "Enter a Valid Color"; } } <input id="colors" type="text" /> <button onClick="changecolor()">Change</button> <p id="error"></p>