2017-08-28 50 views
0

我試圖獲取動態生成的選定選項的值。如果我硬編碼它的作品See fiddle。但動態無效。當我選擇該選項時,什麼都沒有發生我究竟做錯了什麼?如何從動態生成的選擇選項中獲取價值?

標記

<button type="button" id="connect" onclick="login();"> 
<select id="pages" style="display:none;" onchange="getPage();"></select> 

JS

//open login dialog onClick 
function login() { 
FB.login(function(){ 
    FB.api('/me/accounts/', function(response) { 
      var pages = document.getElementById('pages'); 
      pages.style.display = 'block'; 
      document.getElementById("connect").style.display="none"; 
      for(var i =0; i < response.data.length; i++) 
      { 
       pages[i] = new Option(response.data[i].name,response.data[i].access_token); 
      } 

      } 
     ); 

}, {scope: 'manage_pages'}); 
} 

function getPage(){ 
    var e = document.getElementById("pages"); 
    var f = e.options[e.selectedIndex].value;  
    alert(f); 
} 
+0

VAR ID = $( '#頁')找到( '選項:選擇')ATTR( '值'。 );應該取出該值 - 如果未定義,請檢查正在動態構建的值,並設置屬性「值」。 – user685590

+0

@ user685590:你的意思是在getPage()函數中單獨使用它?試過它創造了相同的效果,我不使用jQuery –

回答

0

你可以嘗試以下操作:

更換

pages[i] = new Option(response.data[i].name,response.data[i].access_token); 

隨着

pages.options[pages.options.length]=new Option(response.data[i].name,response.data[i].access_token); 
+0

感謝您嘗試代碼是好的,但不會在解僱警報。 –

0

經過多次試驗,結果發現有什麼不對的初始代碼。問題是我只有一個選項無法啓動事件。爲了解決這個問題,我給選擇添加了一個空選項。

添加這並獲得成功。

document.getElementById("pages").insertBefore(new Option('', ''), 
      document.getElementById("pages").firstChild); 

對於完整的答案見here

相關問題