2015-07-11 114 views
1

這可能很簡單,只是缺少我應該如何返回這些數據。返回'undefined'的多層javascript函數

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/

感謝您的幫助。

回答

1

sumInputs是一個函數,它在一個參數,並且沒有返回。因此sum評估爲undefined

sumInputs裏面,你聲明瞭一個變量reloadData(作爲一個函數),並且每當窗口準備就緒時就讓一個事件綁定運行。你沒有指定任何返回值,甚至沒有執行函數reloadData

我懷疑這是你想要的:http://jsfiddle.net/bk97qc4L/1/

+0

謝謝,我知道這很明顯。我一直在用PHP工作,所以今天早上我的大腦並沒有計算出答案。 – dvoutt

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" />