请参阅下面的我的脚本。
我需要将 selectedLang 的值传递给页面。但它始终显示0而不是更新的值。我错过了什么吗?请告诉我。
如果我添加BLOCK 2,在BLOCK 1内部工作。但问题是,如果我没有点击任何一个单选按钮,它将无法工作。
<script>
var selectedLang = 0;
$(document).ready(function(){
$('.slang').click(function()
{
/*************BLOCk 1 ******************/
var selected = $("input[type='radio'][name='lang']:checked");
if (selected.length > 0)
{
selectedLang = selected.val();
}
alert(selectedLang);
/************** BLOCK 1***************/
});
/************** BLOCK 2***************/
var options = {
script:base_url+"?ajax&json=true&limit=6&songauto=true&lang="+selectedLang+"&",
varname:"input",
json:true,
shownoresults:false,
maxresults:6,
callback: function (obj) { document.getElementById('testid').value=obj.id; }
};
var as_json = new bsn.AutoSuggest('songsearch', options);
/*******************************/
});
</script>
答案 0 :(得分:0)
你可以试试这个
<script>
var selectedLang = 0;
var options;
$(document).ready(function() {
$('.slang').click(function() {
var selected = $("input[type='radio'][name='lang']:checked");
if (selected.length) {
selectedLang = selected.val();
options.script = base_url+"?ajax&json=true&limit=6&songauto=true&lang="+selectedLang+"&";
}
});
var options = {
script:base_url+"?ajax&json=true&limit=6&songauto=true&lang="+selectedLang+"&",
varname:"input",
json:true,
shownoresults:false,
maxresults:6,
callback: function (obj) { document.getElementById('testid').value=obj.id; }
};
var as_json = new bsn.AutoSuggest('songsearch', options);
});
</script>
这可能有用。您可能还需要手动更新as_json
。虽然您应该考虑重新设计解决方案。基本上,您只是想确保每次引用selectedLang
时都会更新。
答案 1 :(得分:0)
使用此设置,它将始终为0,因为在执行单击处理程序之前创建了选项对象。 更新'selectedLang'变量后,您必须从点击处理程序更新选项对象,如下所示:
selectedLang = selected.val();
options.script = base_url+"?ajax&json=true&limit=6&songauto=true&lang="+selectedLang+"&";
它应该可以工作。