Javascript中的求和
我有个问题,希望有人能帮我 我的页面上有3种不同的范围输入:Javascript中的求和,javascript,Javascript,我有个问题,希望有人能帮我 我的页面上有3种不同的范围输入: <input type="range" name="test1" min="0" max="50" value="0" step="5" onchange="showValue(this.value) <input type="range" name="test2" min="0" max="50" value="0" step="5" onchange="showValue(this.value) <input
<input type="range" name="test1" min="0" max="50" value="0" step="5" onchange="showValue(this.value)
<input type="range" name="test2" min="0" max="50" value="0" step="5" onchange="showValue(this.value)
<input type="range" name="test3" min="0" max="50" value="0" step="5" onchange="showValue(this.value)
解决方案
var update=函数(){
var总和=
Array.prototype.slice.call(
document.getElementsByClassName(“rangefield”)
).减少(
功能(a、b){
返回a+数字(b值);
},
0
);
document.getElementById(“sumresult”).innerHTML=sum;
};
JSFiddle:
工作原理
更新字段时,将调用update()
函数
update函数由两条语句组成。我会按照执行的顺序带你看他们的执行情况
调用document.getElementsByClassName
并返回HTMLCollection
。此集合不是数组
因为我需要一个数组,所以我使用array.prototype.slice.call
将HTMLCollection
转换为一个数组
现在我有了一个数组
,我调用了它,它允许我遍历元素并将状态从调用传递到调用它所使用的函数
我提供的reduce参数是:为每个值调用的函数,以及初始值(0)
该函数将被调用三次,首先,第一个范围输入为a
,0为b
。然后它将返回范围输入值和0的和,这是查看1元素后的中间和。以下对匿名函数的调用将中间和与其他两个输入字段的值相加
既然分配了sum
变量,我们将其放入sumresult
元素中,通过将元素的innerHTML
属性分配给ID为sumresult
(使用document.getElementById
检索)来显示
创建一个JSFIDLE并向我们展示到目前为止您所做的工作。我想您要问的是如何访问输入元素并添加它们的值。在传统的javascript中,可以使用document.getElementsByTagName(“输入”),在它返回的数组上循环并添加到结果变量。如果这还不清楚,在继续之前,您应该阅读更多关于DOM访问和事件处理的内容…希望它能有所帮助!
<script>
var update = function() {
var sum =
Array.prototype.slice.call(
document.getElementsByClassName("rangefield")
).reduce(
function (a, b) {
return a + Number(b.value);
},
0
);
document.getElementById("sumresult").innerHTML = sum;
};
</script>
<input type="range" class="rangefield" onchange="update()" onkeyup="update()">
<input type="range" class="rangefield" onchange="update()" onkeyup="update()">
<input type="range" class="rangefield" onchange="update()" onkeyup="update()">
<div id="sumresult"></div>