<dd id="openTime"><label class="nomrgn">
<select id="fWeek"><option value="星期一">星期一</option><option value="星期二">星期二</option><option value="星期日">星期日</option></select>
</label> ~
<label class="nomrgn">
<select id="eWeek"><option value="星期四">星期四</option><option value="星期五">星期五</option><option value="星期六">星期六</option><option value="星期日">星期日</option></select></label>
<span id="idShow"></span>
</dd>
function $(id){
    return document.getElementById(id);
}
var el = $('openTime');
var els=el.getElementsByTagName('select');
for (var i = 0, l = els.length; i < l ; i++)
{
  els[i].onchange = getWeek;
}
function getWeek() {
  var fweek = document.getElementById('fWeek').value;
  var eweek = document.getElementById('eWeek').value;
  document.getElementById('idShow').innerHTML = fweek + '~' + eweek;
}为什么选择了没有任何反应?

解决方案 »

  1.   

    你自己的代码我这里没有问题,ff,chrome,ie6,ie7,ie8都通过
      

  2.   

    当然有问题,你的执行顺序不对,你在获取元素的时候,dd元素还没有被解析到DOM对象中
    javascript采取由上而下的执行,所以才会导致出错,建议方法改成函数调用式,如果非要在引用的js里直接执行函数的话,建议将js代码放置在页面最下面
    例如:你换成这样就没有问题了(源码没变,只是改了个顺序)<body>
    <dd id="openTime"><label class="nomrgn">
    <select id="fWeek"><option value="星期一">星期一</option><option value="星期二">星期二</option><option value="星期日">星期日</option></select>
    </label> ~
    <label class="nomrgn">
    <select id="eWeek"><option value="星期四">星期四</option><option value="星期五">星期五</option><option value="星期六">星期六</option><option value="星期日">星期日</option></select></label>
    <span id="idShow"></span>
    </dd>
            <script>
                function $(id)
                {
                    return document.getElementById(id);
                }
                var el = $('openTime');
                var els = el.getElementsByTagName('select');
                for (var i = 0, l = els.length; i < l; i++)
                {
                    els[i].onchange = getWeek;
                }
                function getWeek()
                {
                    var fweek = document.getElementById('fWeek').value;
                    var eweek = document.getElementById('eWeek').value;
                    document.getElementById('idShow').innerHTML = fweek + '~' + eweek;
                }    </script>
    </body>