2016-09-15 58 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);