【发布时间】:2022-01-12 14:32:28
【问题描述】:
目前在我的代码中,如果用户输入的颜色与数组中的任何颜色相匹配,它将将该颜色类添加到主 div。
问题是我的 else if 语句只运行一次。如果您重新输入相同的颜色,它不会在运行不同的颜色后再次添加该类(例如黑色 > 红色 > 黑色)。
还有其他方法可以解决这个问题吗?
'use strict';
let inputElement = document.getElementById('inpp');
const btn = document.getElementById('btn');
let outputValue = document.getElementById('output');
const bodyEl = document.getElementById('thisBody');
btn.addEventListener('click', (e) => {
// Prevent form from reloading page
e.preventDefault();
let inputValue = inputElement.value;
let favColors = [
'black',
'red',
'blue',
'green',
'yellow',
'pink',
'orange',
'brown',
'white',
'purple'
];
// If user input match
if (favColors.includes(inputValue)) {
outputValue.innerHTML = `Awesome, ${inputValue} is so neat!`;
} else if (inputValue === '') {
outputValue.innerHTML = `Please enter a color..`;
} else {
outputValue.innerHTML = `Interesting, ${inputValue} is new to me!`;
}
// Add color classes on match
if (favColors[0] === inputValue) {
bodyEl.classList.add('black');
} else if (favColors[1] === inputValue) {
bodyEl.classList.add('red');
} else if (favColors[2] === inputValue) {
bodyEl.classList.add('blue');
} else if (favColors[3] === inputValue) {
bodyEl.classList.add('green');
} else if (favColors[4] === inputValue) {
bodyEl.classList.add('yellow');
} else if (favColors[5] === inputValue) {
bodyEl.classList.add('pink');
} else if (favColors[6] === inputValue) {
bodyEl.classList.add('orange');
} else if (favColors[7] === inputValue) {
bodyEl.classList.add('brown');
} else if (favColors[8] === inputValue) {
bodyEl.classList.add('white');
} else if (favColors[9] === inputValue) {
bodyEl.classList.add('purple');
}
// Clear input value
inputElement.value = '';
});
/* Color classes */
.black {
background-color: black !important;
}
.red {
background-color: red !important;
}
.blue {
background-color: blue !important;
}
.green {
background-color: green !important;
}
.yellow {
background-color: yellow !important;
}
.pink {
background-color: pink !important;
}
.orange {
background-color: orange !important;
}
.brown {
background-color: brown !important;
}
.white {
background-color: white !important;
}
.purple {
background-color: purple !important;
}
<div id="thisBody">
<div class="container">
<div class="content">
<div>
<h1 id="output">What's your favorite color?</h1>
<form id="formy">
<input id="inpp" type="text" placeholder="What's your favorite color?">
<button type="submit" id="btn">Submit</button>
</form>
</div>
</div>
</div>
</div>
【问题讨论】:
-
(1) 您添加与颜色相关的类,但从不删除它们;(2) 当您在彼此之上添加类时,只会考虑最后一个(例如
class="pink purple"将忽略“粉红色”)。
标签: javascript html css