在页面加载时触发 JS 函数不起作用
Triggering of JS functions on page load isn't working
我有两个函数在用户输入数据时触发。他们本质上是将他们选择的选项的值相加,然后输出它们。
特别是在此表单中,选项已经预先填充。因此,函数没有被触发,它们的计算结果为 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();
});
我也试过了:
window.onload = function () {
calculateScore();
calculateHiddenScore();
};
请问如何在页面加载后触发这两个函数?非常感谢。
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
});
P.S:顺便说一句,即使上面的内容有所改进,在单个 ID #input
元素上循环使用 each
也没有多大意义 - 我会保留它给你...
我有两个函数在用户输入数据时触发。他们本质上是将他们选择的选项的值相加,然后输出它们。
特别是在此表单中,选项已经预先填充。因此,函数没有被触发,它们的计算结果为 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();
});
我也试过了:
window.onload = function () {
calculateScore();
calculateHiddenScore();
};
请问如何在页面加载后触发这两个函数?非常感谢。
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
});
P.S:顺便说一句,即使上面的内容有所改进,在单个 ID #input
元素上循环使用 each
也没有多大意义 - 我会保留它给你...