问题描述
当满足值条件时,我想 https://stackoverflow.com/a/50093489/2607773,但我不知道如何让 JavaScript 更改 CSS 中设置的颜色:
.noUi-connect {
background: green;
}
下面的最小示例。如何用会改变连接颜色的东西替换 {console.log("true")}
?
<!DOCTYPE html>
<head>
<Meta charset="utf-8">
<link href="nouiSlider.min.css" rel="stylesheet">
<link href="notooltips.css" rel="stylesheet">
</head>
<script src="nouiSlider.min.js"></script>
<script src="wNumb.js"></script>
<div id="tooltipSlider"><script>
var tooltipSlider = document.getElementById('tooltipSlider');
noUiSlider.create(tooltipSlider,{
start: [1,9],connect: true,tooltips: [true,true],range: {'min': 0,'max': 10}
});</script>
<script>tooltipSlider.noUiSlider.on("change",function(){
if (tooltipSlider.noUiSlider.get()[0] == 0) {
console.log("true")} {console.log("false")}})</script>
</div></html>
注意当 tooltipSlider.noUiSlider.get()[0] == 0
由于我不明白的原因似乎满足时,两个字符串都会记录,所以这个 if 语句可能不合适。当条件为真(或滑块设置为该值)时,连接元素必须是某种颜色,当条件为假时必须是另一种颜色。
已经有 change the color of a noUiSlider connect element 我不明白。这个可以用吗?
解决方法
您似乎将 <script>
块放置在应呈现滑块的 div 内 - 最好将其放在上方。
而且似乎 console.log("true")} {console.log("false")}})
表达式需要一些清理 - 在 console.log("true")}
之后应该有一个 else
。
要根据条件更改连接器的颜色,您可以通过选择相应的元素对其应用 Css 选择器,例如:
<div id="tooltipSlider"></div>
<script>
var tooltipSlider = document.getElementById('tooltipSlider');
noUiSlider.create(tooltipSlider,{
start: [1,9],connect: true,tooltips: [true,true],range: {'min': 0,'max': 10}
});
tooltipSlider.noUiSlider.on("change",function(){
var connect = tooltipSlider.querySelectorAll('.noUi-connect');
if (tooltipSlider.noUiSlider.get()[0] == 0) {
connect[1].classList.add('noUi-connect-red');
} else {
connect[1].classList.remove('noUi-connect-red');
}
})
</script>
据我所知 the docs,如果第一个句柄设置为 0,则条件 tooltipSlider.noUiSlider.get()[0] == 0
为真。在这种情况下,第一个连接器的宽度也为 0,所以着色它不会有明显的效果。
我假设您希望可见连接器是彩色的。 The NoUiSlider example 意味着 connect
选项采用布尔数组来分别指定每个连接器。要定位特定的连接器,您必须使用 connect[index of connector you want to have a different color].classList...
在你的 CSS 中:
.noUi-connect {
background: green;
}
.noUi-connect-red {
background: red;
}