无法传递变量值,我该如何解决?

时间:2013-12-18 13:10:33

标签: javascript jquery

请参阅下面的我的脚本。

我需要将 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>

2 个答案:

答案 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+"&";

它应该可以工作。