我在访问和更新document.ready函数中声明的变量时遇到了一些问题。每次我尝试在我的函数内部执行这些函数的值。这是我的文件。带有变量和函数的就绪函数。对此有任何帮助将不胜感激。
/***********************************************************/
var bdv;
var mv;
var cYear;
var _miles;
var cpo_input;
/* -------------------------------------------------*/
var _prestige;
var car_type;
var acc_history;
var _aam;
var avg_mileage;
/***********************************************************/
$(document).ready(function() {
/***********************************************************/
bdv = $("#base_dv").val();
mv = $('input:text[name="field8"]').val();
cYear = $('input:text[name="field2"]').val();
_miles = $('input:text[name="field5"]').val();
cpo_input = $('input:text[name="field19"]');
/* -------------------------------------------------*/
_prestige = 0.00;
car_type= 0;
acc_history = 0;
_aam = 0.00;
avg_mileage = 0.00;
/***********************************************************/
if ('<?php echo $job[0]['
job_type '] ?>' == "33") {
$('input:radio[name="field32"][value = val1]').attr("disabled", true);
$('input:radio[name="field32"][value = val2]').attr("disabled", true);
$("[name='field20[]']").each(function () {
$(this).change(function () {
$('input:radio[name="field7"]').each(function () {
if (!$('input:radio[name="field7"]').is(':checked')) {
alert("Please Select 2 or 4 door car");
$("[name='field20[]']").each(function () {
$(this).removeAttr('checked');
});
} else if ($('input:radio[name="field7"]').is(':checked')) {
return false;
}
});
$(this).click(function () {
bdv = damage_severity(mv, bdv);
_aam = average_annual_mileage_factor(_miles, mv);
avg_mileage = avg_mileage_calc(_miles, cYear);
alert("Market Value: " + mv);
alert("Miles Reporting: " + _miles);
alert("Base DV:" + bdv);
alert("Average Annual Mileage" + _aam);
alert("Average Mileage outside func: " + avg_mileage);
});
});
});
});
答案 0 :(得分:2)
在.ready()
之外声明它们。在.ready()
内填充它们。
此外,您拥有许多功能,首先不需要.ready()
。
答案 1 :(得分:0)
bdv
,_aam
和avg_mileage
似乎与触发document.ready
时的值相同,因为在使用它们之前永远不会更新这些值。
我会将声明移回$(document).ready()
并执行以下操作:
$(document).ready(function () {
var bdv, aam = ...,
$bdv = $("#base_dv"),
$mv = $('input:text[name="field8"]'),
:
;
:
$(this).click(function () {
bdv = damage_severity($mv.val(), $bdv.val());
:
});
:
});
另请注意,您必须将$(this).click();
从$(this).change();
移出。就像现在一样,每次在该元素上触发onchange
时,您的代码都会为元素附加一个新的单击侦听器。