Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问jquery函数外部声明的变量_Javascript_Jquery - Fatal编程技术网

Javascript 访问jquery函数外部声明的变量

Javascript 访问jquery函数外部声明的变量,javascript,jquery,Javascript,Jquery,我在访问和更新document.ready函数中声明的变量时遇到了一些问题。每次我尝试在我的函数中执行警报时,都会更改这些函数的值。这是我的文件。带有变量和函数的ready函数。在此方面的任何帮助都将不胜感激 /***********************************************************/ var bdv; var mv; var cYear; var _miles;

我在访问和更新document.ready函数中声明的变量时遇到了一些问题。每次我尝试在我的函数中执行警报时,都会更改这些函数的值。这是我的文件。带有变量和函数的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);
                 });
             });
         });
     });
/*********************************************************************************/
var-bdv;
var-mv;
变种cYear;
var_miles;
变量cpo_输入;
/* -------------------------------------------------*/
var_prestige;
var车型;
var acc_历史;
var_aam;
var平均里程;
/***********************************************************/  
$(文档).ready(函数(){
/***********************************************************/ 
bdv=$(“#base#u dv”).val();
mv=$('input:text[name=“field8”]”)。val();
cYear=$('input:text[name=“field2”]”)。val();
_英里=$('input:text[name=“field5”]')。val();
cpo_输入=$('input:text[name=“field19”]”);
/* -------------------------------------------------*/
_声望=0.00;
车辆类型=0;
acc_历史=0;
_aam=0.00;
平均里程=0.00;
/***********************************************************/             
如果(“”=“33”){
$('input:radio[name=“field32”][value=val1]').attr(“disabled”,true);
$('input:radio[name=“field32”][value=val2]').attr(“disabled”,true);
$(“[name='field20[]']”)。每个(函数(){
$(此).change(函数(){
$('input:radio[name=“field7”]”)。每个(函数(){
如果(!$('input:radio[name=“field7”]”)是(':checked')){
警报(“请选择2门或4门轿厢”);
$(“[name='field20[]']”)。每个(函数(){
$(this.removeAttr('checked');
});
}else if($('input:radio[name=“field7”]”)是(':checked')){
返回false;
}
});
$(此)。单击(函数(){
bdv=损伤程度(mv,bdv);
_aam=平均年里程系数(_英里,mv);
平均里程=平均里程计算(_英里,cYear);
警报(“市值:+mv”);
警报(“英里报告:”+英里);
警报(“基本DV:+bdv”);
警报(“平均年里程”+aam);
警报(“功能范围外的平均里程:+平均里程”);
});
});
});
});

.ready()
之外声明它们。在
.ready()
内部填充它们


此外,您还有很多功能,这些功能一开始不需要在
.ready()
中。

\u aam
avg_miliety
似乎具有与
文档触发时相同的值。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()移出
。现在,每次在元素上触发
更改
时,您的代码都会将一个新的click listener附加到该元素。

变量只能在相同或更低的范围内访问。但是在这里,我没有看到任何问题。Wolff我不确定为什么我也会得到0,即使在.ready范围外声明了它们,并且在.ready作用域内初始化它们。Teemu很抱歉,我可能没有完全集中注意力。我的意思是我发出警报的值不正确。它们是原始声明的值。关于返回false,我不确定在满足条件后是否有更好的方法退出循环。Teemu-我对大多数情况都不太了解,您的建议是什么ice是否希望提高效率?嗯……请忘记jQuery中的
返回问题。但是每次更改内容时附加一个新的单击处理程序可能不是您想要的。在
damage\u severity()
和其他函数声明中的参数如何命名?如果您有相同的名称(
\u miles
mv
),原始外部值隐藏在该函数中。OP的代码中有什么问题,我看不出来。好的,我明白了,OP发布的代码是有效的,而不是无效的代码。我这样做了,现在它没有提示值,我不确定为什么使用bdv=损坏严重程度($mv.val(),$bdv.val());实际上返回了一个错误,表示$mv.val()不是函数。您确定您已为它们分配了实际的jQuery对象,而不是
.val()
?请重新查看我的代码中的变量声明。