Javascript,如果输入类型为范围条件



我正试图弄清楚我的脚本出了什么问题。当输入达到1时,它应该显示警报,但没有。但是,如果我将(value===1(替换为(value===value(,它会在每次更改输入时显示警报。所以我知道问题出在语法"(value===1("上。我什么都试过了。5个小时还不足以让我在互联网上找到解决方案,所以我希望有人告诉我是否在语法或其他方面犯了错误。谢谢你抽出时间。

<input id="carrotate123" type="range" min="0" max="3" value="2" oninput="getInput(this.value)">
<script>
function getInput(value) {
var rangeInput = document.getElementById("carrotate123").value;
var value = rangeInput.value;
if (value === 1) { 
alert("First"); 
}

}
</script>

===运算符意味着在值和类型上都严格相等。在您的例子中,valuestring(DOM元素的value属性通常返回string(,而1显然是number。考虑以下示例:

1 == 1 // true
1 == "1" // true
1 === 1 // true
1 === "1" // false

您应该考虑将===更改为==(执行自动类型强制(,或者将您的值与"1"(作为字符串(进行比较。

关于比较运算符之间差异的更多信息:表达式和运算符

这里有两个错误。首先,您有一个额外的呼叫value。最干净的解决方案是删除rangeInput分配中的一个。但您也可以简单地使用该值,并完全跳过定义rangeInput

Szab的回答涵盖了第二个问题。您需要更改将目标值与input元素提供的String进行比较的方式。组合这些看起来像这样:

<input id="carrotate123" type="range" min="0" max="3" value="2" oninput="getInput(this.value)">
<script>
function getInput(value) {
var rangeInput = document.getElementById("carrotate123");
var value = rangeInput.value;
// or replace the previous two lines with
// var value = document.getElementById("carrotate123").value
if (value == 1) { // or: if (value === '1')
alert("First"); 
}

}
</script>

最新更新