我试图在不完全重做程序的情况下重构旧代码。
我的战略命名对象是来自vendor
的字符串的值。 (vendor = "Ansys" or vendor = "Cadence")
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>
为了替换它,我做了一个函数 - 使用eval,安全性无关紧要:
function createDiv()
{
var vendorKey = eval(vendor).key;
var otherVendorKey = eval(vendor).otherkey;
var myDiv = document.createElement('div');
var html = '<select id="' + otherVendorKey + '" size="4" onchange="selectOther('+ otherVendorKey + ')"></select>';
myDiv.innerHTML = html;
myDiv.id = vendorKey;
document.body.appendChild(myDiv);
}
我正在收到我想要的结果,但是,当我尝试在函数selectOther
中使用selectedIndex时,看来mk为null。
function selectOther(wid)
{
var mk = document.getElementById(wid);
alert(mk);
var index = mk.selectedIndex;
key = mk.options[index].value;
setKey ();
getKeyStats ();
}
HTML似乎有效,但似乎无法识别来自wid的id。任何帮助将非常感激。