2015-12-02 40 views
0

我創建了一個函數來生成具有選擇列表的表。該函數的工作原理,但我有問題從選擇列表中獲取值。從生成的選擇列表中獲取值

我設置選擇列表中的ID和這樣一個onchange功能:

var selectList = document.createElement("select"); 
    selectList.setAttribute("id", "numSelect");  
    selectList.setAttribute("onchange", getVal()); 

但是,函數沒有找到ID,因此無法獲取值:

function getVal() { 
    var sect = document.getElementById("numSelect"); 
    var opt = sect.options[sect.selectedIndex].value; 
    console.log(opt); 
    //var totalSect += opt; 
    //console.log(totalSect); 
    }; 

我知道我很近,但沒有雪茄在眼前。 「getContent」函數爲選擇框中的值返回「null」。

我希望能夠 a)當數字被選中時更新總節數(「totalSect」),並且 b)能夠讀取完成的表格並將其保存到數組中。

我知道jQuery使這更容易,遲早我會分解並學習它,但沒有人有純JavaScript的答案?

小提琴這裏:https://jsfiddle.net/1mnxna3p/5/

+1

被寫入的方式,您將onchange屬性設置爲getVal()函數返回的值。你是否試圖在選擇框上設置一個事件監聽器?你會想使用selectList.addEventListener('change',getVal); – mcgraphix

+0

清除getVal阻止選擇列表創建,但它似乎沒有返回控制檯中的任何值。 – Tyler330

回答

2

檢查這一點,讓我知道,如果是工程..

function getVal(ob) { 
    var opt = ob.options[ob.selectedIndex].value; 
    console.log(opt); 
    //var totalSect += opt; 
    //console.log(totalSect); 
}; 

var selectList = document.createElement("select"); 
    selectList.setAttribute("id", "numSelect");  
    selectList.setAttribute("onchange", "getVal(this)"); 

參考https://jsfiddle.net/1mnxna3p/10/

+0

由於您正在使用選擇多次更好地刪除ID屬性。上述修補程序也將工作無屬性。 – Yoganand

+0

不錯!這似乎運作良好。你能解釋一下爲什麼擺脫ID屬性是一個好主意,並且可以幫助getContent函數返回「undefined」嗎? – Tyler330

+0

ID只能在頁面中使用一次。如果我們有時多次使用相同的ID,它可能會出現問題,並在getContent中獲取值,這裏更新https://jsfiddle.net/1mnxna3p/13/ – Yoganand