【发布时间】:2020-10-06 14:35:52
【问题描述】:
我正在使用 admin lte 3 bootstrap 4。 我想使用 javascript classList 添加/更改选择选项输入(下拉列表)的类。 下拉列表的背景和验证颜色将根据所选选项而改变,使用添加或更改类。
如果我选择 Person 2,背景颜色变为绿色(bg-success)。 当我使用硬代码或在检查元素浏览器中手动更改该类时,该类效果很好。 但是当 onchange 选择时脚本不能添加/更改类。 脚本在输入类型文本中工作得很好,我使用它们进行输入文本验证。我不知道为什么不在选择选项中工作。
function changeclass($value) {
var element = document.getElementById(event.target.id);
console.log($value); //works great, return value of option
console.log(event.target.id); //works great, return element id = person
if ($value == 1) {
if (element.classList.contains("bg-success") == true) element.classList.replace("bg-success", "bg-warning");
if (element.classList.contains("bg-danger") == true) element.classList.replace("bg-danger", "bg-warning");
if (element.classList.contains("bg-warning") == true) element.classList.replace("bg-warning", "bg-warning");
if (element.classList.contains("bg-warning") == false) element.classList.add("bg-warning");
console.log(element.classList.contains("bg-success")); //works great, return false because no class bg-successin select class
console.log(element.classList.contains("color-pallete")); //works great, return true
}
if ($value == 2) {
if (element.classList.contains("bg-success") == true) element.classList.replace("bg-success", "bg-success");
if (element.classList.contains("bg-danger") == true) element.classList.replace("bg-danger", "bg-success");
if (element.classList.contains("bg-warning") == true) element.classList.replace("bg-warning", "bg-success");
if (element.classList.contains("bg-success") == false) element.classList.add("bg-success");
}
//.... until 4
if (element.classList.contains("is-valid") == false) element.classList.add("is-valid");
}
.bg-warning {
background-color: #ffc107 !important;
}
.bg-success {
background-color: #28a745 !important;
}
<select id="person" class="form-control color-pallete" onchange="changeclass(value);">
<option value='1'>person 1</option>
<option value='2'>person 2</option>
<option value='3'>person 3</option>
<option value='4'>person 4</option>
</select>
有什么建议吗? 谢谢你:)
【问题讨论】:
-
您还应该包含您的 css,以便我们可以看到会发生什么。此外,将警报更改为 console.log() 语句,这样我们就不必每次都关闭消息!
-
@ATD 对不起!完成编辑:)
标签: javascript html select adminlte