这可能很简单,只是错过了我应该如何返回这些数据。
var sumInputs = function (input) {
var reloadData = function () {
var sum = 0;
$(input).each(function() {
sum += Number($(this).val());
});
return sum;
};
$(window).ready(function () {
var changeOn = $(input);
changeOn.on('change', function () {
var data = reloadData();
});
changeOn.trigger('change');
});
};
var sum = sumInputs('.feature');
console.log(sum);
现在我的结果是undefined
。这是我的jsfiddle:http://jsfiddle.net/bk97qc4L/
感谢您的帮助。
答案 0 :(得分:1)
您的sumInputs
是一个接受一个参数并且不返回任何内容的函数。因此sum
评估为undefined
。
在sumInputs
内,您声明了一个变量reloadData
(作为一个函数),并在窗口准备就绪时使一个事件绑定运行。您没有指定任何返回值,甚至没有执行函数reloadData
。
我怀疑这就是你想要的:http://jsfiddle.net/bk97qc4L/1/
答案 1 :(得分:0)
$(document).ready(function () {
function sumInputs(input, output) {
var $input = $(input);
function reloadData() {
var sum = 0;
$(input).each(function() {
sum += Number($(this).val());
});
return sum;
};
$input.on('change', function () {
$('#output').val(reloadData());
});
};
sumInputs('input.feature','#output');
$('input.feature').change(); // for first time output
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr><td><input type="text" class="feature" value="10" /></td></tr>
<tr><td><input type="text" class="feature" value="10" /></td></tr>
<tr><td><input type="text" class="feature" value="10" /></td></tr>
<tr><td><input type="text" class="feature" value="10" /></td></tr>
</table>
<label for="output">Output:</label>
<input type="text" id="output" />