невозможно передать значение переменной, как я могу это исправить?

0

См. Мой сценарий ниже.

Мне нужно передать значение 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>
  • 1
    Вы устанавливаете options и as_json когда документ загружается, а selectedLang равен 0, они никогда не будут обновляться при изменении selectedLang
  • 0
    Не могли бы вы поделиться HTML?
Теги:

2 ответа

0

При такой настройке оно всегда будет 0, поскольку объект объектов создается до выполнения обработчика клика. Вам нужно будет обновить объект options из обработчика щелчка после обновления переменной "selectedLang", примерно так:

selectedLang = selected.val();
options.script = base_url+"?ajax&json=true&limit=6&songauto=true&lang="+selectedLang+"&";

и тогда он должен работать.

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 обновляется, когда она есть.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню