在页面加载时触发JS函数不起作用

时间:2017-05-01 15:59:12

标签: javascript onload

我有两个在用户输入数据时触发的功能。它们基本上将他们选择的选项的值相加,然后输出它们。

在此表单上,特别是选项已预先填充。因此,未触发函数,将其计算保留为def reco(n): print('create instance nbr ', n) if n == 1: print('base case reached, instances will be popped LIFO') return else: n -= 1 reco(n) print('pop instance nbr ', n) n = 5 reco(n)

这些功能显示在null

之上

功能

</body>

代码放置在函数下方以尝试触发它们:

 $(calculateScore);
      function calculateScore () {
        var fields = $('.form-group #input').change(calculate);

        function calculate () {
          var score = 0;
          fields.each(function () {
            score += +$(this).val();
          });
          $('#score').html(score.toFixed(0));
        }
      }

      $(calculateHiddenScore);
      function calculateHiddenScore () {
        var fields = $('.form-group #input').change(calculate);

        function calculate () {
          var score = 0;
          fields.each(function () {
            score += +$(this).val();
          });
          $('#hidden_score').val(score.toFixed(0));
        }
      }

我也尝试过:

$(function () {
    calculateHiddenScore();
    calculateScore();
});

请在页面加载后如何触发这两个功能?非常感谢。

1 个答案:

答案 0 :(得分:1)

即使您的项目已预先填充,DOM就绪也不会触发onchange事件 因此,你必须修改你的脚本,如:

function calculateScore() {
  var fields = $('.form-group #input'); // Cache only!

  function calculate() {
    var score = 0;
    fields.each(function() {
      score += +$(this).val();
    });
    $('#score').html(score.toFixed(0));
    $('#hidden_score').val(score.toFixed(0));
  }

  calculate();                    // Calculate ASAP (on DOM ready)
  fields.on("change", calculate); // and also on change
}


jQuery(function($) { // DOM is ready and $ alias secured
  calculateScore(); // Trigger
  // other jQuery code here
});

PS:顺便说一句,即使上面的内容有所改善,使用each在单个ID #input元素上循环也没什么意义 - 我会把它留给你...... / p>