JavaScript: Little Codes
Select Theme: Within scope
Code:
<div>
<label for="scope">Select scope: </label>
<select id="scope">
<option value="page">Whole page</option>
<option value="box">This box</option>
</select>
</div>
<div class="js-resultbox">
<label for="theme">Select theme: </label>
<select id="theme">
<option value="default">Default</option>
<option value="baby">Baby</option>
<option value="unicorn">Unicorn</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</div>
Script 2
<script>
// Function for capturing user's preference
captureScope = () => (document.querySelector("#scope").value === "page") ? "html": ".js-resultbox";
function captureTheme () {
switch (document.querySelector("#theme").value) {
case "baby":
changeTheme ("cadetblue", "mistyrose");
break;
case "unicorn":
changeTheme ("purple", "lightyellow");
break;
case "light":
changeTheme ("black", "whitesmoke");
break;
case "dark":
changeTheme ("white", "black");
break;
case "default":
changeTheme(null, null);
break;
}
}
// Function for changing theme
function changeTheme (textColor, backColor) {
document.querySelector(captureScope()).style.color = textColor;
document.querySelector(captureScope()).style.backgroundColor = backColor;
}
// Capture user input
theme.addEventListener("change", captureTheme);
scope.addEventListener("change", captureScope);
</script>
Script 1
<script>
let userScope = "html";
function captureScope () {
switch (document.querySelector("#scope").value) {
case "page":
userScope = "html";
break;
case "box":
userScope = ".js-resultbox";
break;
}
}
function captureTheme () {
switch (document.querySelector("#theme").value) {
case "baby":
changeTheme ("cadetblue", "mistyrose");
break;
case "unicorn":
changeTheme ("purple", "lightyellow");
break;
case "light":
changeTheme ("black", "whitesmoke");
break;
case "dark":
changeTheme ("white", "black");
break;
case "default":
changeTheme(null, null);
break;
}
}
// Function for changing theme
function changeTheme (textColor, backColor) {
document.querySelector(userScope).style.color = textColor;
document.querySelector(userScope).style.backgroundColor = backColor;
}
// Capture user input
theme.addEventListener("change", captureTheme);
scope.addEventListener("change", captureScope);
</script>