2016-09-15 79 views
0

我正在重構舊代碼並且無法找到typeerror的解決方案(我明白eval的使用是皺眉,但在我的情況下沒有必要爲了安全)。無法從動態html代碼讀取屬性'樣式'null

我有喜歡的對象:

var Ansys = {key:'ansyskeys', loaded:0, display: "none", otherkey: 'anotherkey'}; 
var Cadence = {key:"cdskeys", loaded:0, display: "none", otherkey: 'cotherkey'}; 

我以前的HTML代碼,這是靜態的,我試圖重構是動態的:

<div id="ansyskeys" style="display:none"> 
    <select id="anotherkey" size="5" onchange="selectOther('anotherkey')"></select> 
</div> 

這是從所謂的(賣方持有的名字我想要的對象):

document.getElementById(eval(vendor).key).style.display = eval(vendor).display; 

我該如何去改變HTML是類似的東西(我是你在我的對象中顯示其他內容)

<div id="eval(vendor).key" style="display:none"> 
    <select id="eval(vendor).otherkey" size="5" onchange="selectOther(eval(vendor).otherkey)"></select> 
</div> 

任何幫助將不勝感激。

+1

爲什麼你需要的eval(? Eval接收字符串作爲輸入,但您已有對象可用。 –

+0

eval將字符串名稱轉換爲文字,而不是說vendor.key並返回undefined返回,eval(vendor).key的行爲就好像它是Ansys.key – CDaly

回答

1

如果vendor擁有你所需要的對象:在所有)

var key = vendor.key; 
var otherkey = vendor.otherkey; 
var myDiv = document.createElement('div'); 

var html = '<select id="' + otherkey + '" size="5" onchange="selectOther('+ otherkey + ')"></select>'; 

myDiv.innerHTML = html; 
myDiv.id = key; 
document.body.appendChild(myDiv);