好的,在我的html / js中,我有一个基于用户之前选择更新的表单。在最后一个阶段,我有一个选择菜单,用户将选择他们的城市。我已将所选项目的值存储在我的选项列表中,其ID为#myCity,如下所示。
('#myCity').change(function(){
var CityValue = $("#myCity").val();
});
设置该值后,我的表单会显示提交按钮
<input type="submit" id="go" value="Submit" onclick="getweather()" />
这是我开始有点麻烦的地方。在我的getweather()函数中,我希望能够从上面获取var CityValue并将其附加到另一个var,以便我可以加载特定的页面。
function getweather(){
var CityValue;
var to_load = 'getweather.php?p='+ CityValue +'.html';
$('#weather').empty().append(to_load);
}
但在我的测试中,我不认为我的getweather()函数能够读取我想要的var。有人可以提出解决方案吗?
答案 0 :(得分:2)
好吧,你指定的第一个函数(onchange的事件处理程序)现在没有做任何事情。您可以删除它并编辑第二个函数,如下所示:
function getweather(){
var CityValue = $("#myCity").val();
var to_load = 'getweather.php?p='+ CityValue +'.html';
$('#weather').empty().append(to_load);
}
答案 1 :(得分:0)
您仅在无法从外部访问的函数范围内声明了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);
}
或者只需在$("#myCity").val()
函数中调用getweather
:
function getweather() {
var to_load = 'getweather.php?p='+ encodeURIComponent($("#myCity").val()) +'.html';
$('#weather').empty().append(to_load);
}
答案 2 :(得分:0)
好吧,你指定的第一个函数(onchange的事件处理程序)现在没有做任何事情。您可以删除它并编辑第二个函数,如下所示:
然后,您可以将此函数调用添加到更改事件。
function getweather(){
var CityValue = $("#myCity").val();
var to_load = 'getweather.php?p='+ CityValue +'.html';
$('#weather').empty().append(to_load);
}
$('#myCity').change(getweather);
答案 3 :(得分:0)
问题的更优雅答案是使用jQuery data API。这允许您在对象中存储任意数据,而不是声明变量,以一种漂亮的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);
}