2013-12-18 2 views
0

아래 내 스크립트를 참조하십시오.변수 값을 전달할 수 없습니다. 어떻게 해결할 수 있습니까?

selectedLang 값을 페이지에 전달해야합니다. 항상 업데이트 된 값 대신 0을 표시합니다. 나는 아무것도 놓쳤는가? 제발 조언 해주세요.

내가 블록 2를 추가하면, 블록 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

문서가로드되고'selectedLang'이 0 일 때'options'와'as_json'을 설정하면'selectedLang'이 변경 될 때 업데이트되지 않습니다 –

+0

html을 공유 할 수 있습니까? –

답변

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에 대한 모든 참조가 업데이트 될 때 업데이트되도록하려는 것입니다.

0

이 설정을 사용하면 클릭 핸들러가 실행되기 전에 옵션 개체가 만들어 지므로 항상 0입니다. 당신은이 같은 'selectedLang'변수, 뭔가 업데이트 후 옵션을 클릭 처리기에서 개체를 업데이트해야합니다 :

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

을하고 그 다음 작동합니다.

관련 문제