我正在重构旧代码,无法找到类型错误的解决方案(我理解使用eval是不赞成的,但在我的情况下,不需要安全性)。
我有像:
这样的对象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>
任何帮助将不胜感激。
答案 0 :(得分: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);