我正在生成一个“选择”元素,然后用选项填充它并将其插入到我页面的 DOM 中。在 FF、Chrome、Chromium 等中一切都很好,但在 IE 中,下拉列表中没有选项显示,但光标下显示突出显示,当我单击空白列表时,事件处理程序被触发并正确处理。这是相关的 HTML 区域:
<span id="spn_fyear" style="position:absolute; top:7px; left:200px; height:24px; cursor:pointer; color:#000000;" onclick="spn_fyear_onclick(this)">
<span id="spn_fyearno" style="position:absolute; top:0px; font:italic bold 17px sans-serif; color:#FFFEF2;"><?=$thisPage->getVar('start_year')?></span>
</span>
这是有问题的javascript:
function spn_fyear_onclick(_obj)
{
//make start year list
var lstto = document.getElementById('lst_year');
var topts = new Array();
var nopt = null;
for(i=0; i<lstto.options.length; i++)
{
topts[i] = lstto.options[i].text;
}
var lstf = document.createElement('SELECT');
lstf.id = "lst_fyear";
lstf.style.position = "absolute";
lstf.style.top = "-3px";
lstf.style.left = "1px";
lstf.style.fontFamily = "sans-serif";
lstf.style.fontWeight = "normal";
lstf.style.fontSize = "12px ";
lstf.style.width = "55px";
lstf.style.color = "#000000";
lstf.style.display = "inline";
lstf.onchange = lst_fyear_onchange;
for(i = 0; i < topts.length; i++)
{
if(topts[i] != 'undefined')
{
nopt = document.createElement('OPTION');
nopt.text = topts[i];
nopt.value = topts[i];
lstf.appendChild(nopt);
}
}
document.getElementById('spn_fyear').appendChild(lstf);
}
在这一行中:var lstto = document.getElementById('lst_year')
我正在创建对现有选择对象的引用,我从中复制选项数据。lst_year 在页面首次加载时由 php 数据库查询填充。我绝望地创建了数组 ( var topts = new Array()
),以防 IE 有一个复制属性和属性但无济于事的怪癖。就像我说的 - 在 Linux 和 Windoze 中的 FF 或 Chrome 中,一切都像梦一样工作,但与 IE 混为一谈。我已经搜索了 MSDN 等一些晦涩的行为,但我很难过。任何建议将不胜感激:) 亲切的问候,仁