Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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-在一个函数中访问一个VAR,而我需要在另一个函数中访问它?_Javascript_Jquery_Variables_Function - Fatal编程技术网

Javascript JQuery-在一个函数中访问一个VAR,而我需要在另一个函数中访问它?

Javascript JQuery-在一个函数中访问一个VAR,而我需要在另一个函数中访问它?,javascript,jquery,variables,function,Javascript,Jquery,Variables,Function,好的,在我的html/js中,我有一个表单,它根据用户先前的选择进行更新。在最后一个阶段,我有一个选择菜单,用户将选择他们的城市。我已将id为myCity的选项列表中所选项目的值存储到以下位置 ('#myCity').change(function(){ var CityValue = $("#myCity").val(); }); 设置该值后,“我的表单”将显示“提交”按钮 <input type="submit" id="go" value="Submit" onclick=

好的,在我的html/js中,我有一个表单,它根据用户先前的选择进行更新。在最后一个阶段,我有一个选择菜单,用户将选择他们的城市。我已将id为myCity的选项列表中所选项目的值存储到以下位置

('#myCity').change(function(){
    var CityValue = $("#myCity").val();
});
设置该值后,“我的表单”将显示“提交”按钮

<input type="submit" id="go" value="Submit" onclick="getweather()" />
但是在我的测试中,我认为我的getweather函数无法读取所需的var。有人能提出解决方案吗?

您仅在无法从外部访问的函数范围内声明了CityValue。要么全局声明变量:

var CityValue;
$('#myCity').change(function(){
    CityValue = $("#myCity").val();
});
function getweather() {
    var to_load = 'getweather.php?p='+ encodeURIComponent(CityValue) +'.html';
    $('#weather').empty().append(to_load);
}
或者只需在getweather函数中调用$myCity.val即可:

function getweather() {
    var to_load = 'getweather.php?p='+ encodeURIComponent($("#myCity").val()) +'.html';
    $('#weather').empty().append(to_load);
}

嗯,您为onchange指定的第一个事件处理程序现在没有任何作用。您只需将其删除并编辑第二个函数,如下所示:

function getweather(){
    var CityValue = $("#myCity").val();

    var to_load = 'getweather.php?p='+ CityValue +'.html';

    $('#weather').empty().append(to_load);
}

嗯,您为onchange指定的第一个事件处理程序现在没有任何作用。您只需将其删除并编辑第二个函数,如下所示:

function getweather(){
    var CityValue = $("#myCity").val();

    var to_load = 'getweather.php?p='+ CityValue +'.html';

    $('#weather').empty().append(to_load);
}
然后可以将此函数调用添加到更改事件中

function getweather(){
    var CityValue = $("#myCity").val();

    var to_load = 'getweather.php?p='+ CityValue +'.html';

    $('#weather').empty().append(to_load);
}

$('#myCity').change(getweather);

对这个问题更优雅的回答是使用。这允许您在对象中存储任意数据,而不是声明变量,从而使一切都保持良好的OOP方式。因此,要执行您想要的操作,就意味着像这样存储值:

$('#myCity').change(function(){
   $("#myCity").data("CityValue", $("#myCity").val());
}); 
这样,您就可以像这样检索它:

function getweather(){
   var to_load = 'getweather.php?p='+ $("#myCity").data("CityValue") +'.html';
   $('#weather').empty().append(to_load);
}

你建议我把getweather函数放在哪里?我的问题的演示可以在这里找到,你建议我把getweather函数放在哪里?我的问题的演示可以在这里找到