[英]Javascript/jQuery getting total sum from multiple inputs using on change
[英]Getting the sum of multiple array in javascript or jquery
如何在JS或jquery中獲得這2 arrays
的總和。 我還想檢查b
存在或不為空。 這是我的代碼:
$('select[name=changer]').change(function() { var one = $(this).val(); if (one == 'one') { alert('One'); } else { var all_grade1 = $('select[name=grade\\\\[\\\\]]').val() || []; var all_grade2 = $('select[name=has_grade\\\\[\\\\]]').val() || []; var alls = all_grade1.concat(all_grade2); var yes = alls.reduce(getSum, 0); alert(yes); } }); function getSum(total, value) { return total + parseInt(value, 10); }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="changer"> <option value="one">One</option> <option value="multiple">Multiple</option> </select> <hr /> <select name="grade[]"> <option value="1">Grade1</option> <option value="2">Grade2</option> <option value="3">Grade3</option> </select> <select name="grade[]"> <option value="2">Grade2</option> <option value="4">Grade4</option> <option value="6">Grade6</option> </select> <select name="has_grade[]"> <option value="1">HasGrade1</option> <option value="2">HasGrade2</option> <option value="3">HasGrade3</option> </select>
我對此進行了研究,但似乎與我的問題不符。 有任何建議/答案嗎?
在DOM中查詢所有相關的<select>
元素
$('select[name=grade\\[\\]], select[name=has_grade\\[\\]]')
遍歷它們並以數字的形式獲得所選選項的值
.get().map(function(select) {
return parseInt(select.value, 10)
})
總結一下
.reduce(getSum, 0)
所有這些看起來像這樣:
$('select[name=changer]').change(function() {
var one = $(this).val();
if (one == 'one') {
console.log('One');
} else {
var selects = $('select[name=grade\\[\\]], select[name=has_grade\\[\\]]');
var yes = selects.get() // get the matched DOM nodes as an array
.map(function(select) { // get the values (as numbers) of the selected options
return parseInt(select.value, 10);
})
.reduce(getSum, 0); // sum the selected options
console.log(yes);
}
});
$('select[name=changer]').change(function() { var one = $(this).val(); if (one == 'one') { console.log('One'); } else { var selects = $('select[name=grade\\\\[\\\\]], select[name=has_grade\\\\[\\\\]]'); var yes = selects.get() // get the matched DOM nodes as an array .map(function(select) { // get the values (as numbers) of the selected options return parseInt(select.value, 10); }) .reduce(getSum, 0); // sum the selected options console.log(yes); } }); function getSum(total, value) { return total + parseInt(value, 10); // or parseFloat() depending on the value }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select name="changer"> <option value="one">One</option> <option value="multiple">Multiple</option> </select> <hr /> <select name="grade[]"> <option value="1">Grade1</option> <option value="2">Grade2</option> <option value="3">Grade3</option> </select> <select name="grade[]"> <option value="2">Grade2</option> <option value="4">Grade4</option> <option value="6">Grade6</option> </select> <select name="has_grade[]"> <option value="1">HasGrade1</option> <option value="2">HasGrade2</option> <option value="3">HasGrade3</option> </select>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.