获取所选选项的Javascript在Webkit/FF中有效,但在IE中无效



我使用javascript从一个下拉列表中获取所选选项,然后将该信息放入另一个下拉菜单中。代码在Safari、Chrome和Firefox中运行良好,但在IE中失败。有人能帮我使代码跨浏览器兼容吗?

    function showTeams(weekNum) {
    var selectedItem = document.getElementById('pick'+weekNum);
    var a = document.getElementById('week'+weekNum).selectedIndex;
    if (a != 0) {
        var str = document.getElementById('week'+weekNum).value;
        var away = str.match(/^(.*)(?= at)/);
        var home = str.match(/at(.*)/);
        selectedItem.options[0].text = away[0];
        selectedItem.options[0].value = away[0];
        selectedItem.options[1].text = home[1];
        selectedItem.options[1].value = home[1];
        document.getElementById('week'+weekNum).style.visibility = "none";
        selectedItem.style.visibility = "visible";
        selectedItem.selectedIndex = 0;
    }
}

它在var str = document.getElementById('week'+weekNum).value;的IE中失败,str以空白返回,这会破坏正则表达式及其下面的所有内容。如有任何见解和帮助,我们将不胜感激。

编辑:添加相关HTML。

<form class="pick" name="picks" action="./resources/send_picks.php" method="post">
    <p>Week 1: <select class="week" name="week1" id="week1" onchange="javascript:showTeams('1');">
        <option></option>
        <option>Dallas Cowboys at N.Y. Giants</option>
        <option>Indianapolis Colts at Chicago Bears</option>
        <option>New England Patriots at Tennessee Titans</option>
        <option>Buffalo Bills at N.Y. Jets</option>
        <option>Washington Redskins at New Orleans Saints</option>
        <option>Jacksonville Jaguars at Minnesota Vikings</option>
        <option>Atlanta Falcons at Kansas City Chiefs</option>
        <option>Philadelphia Eagles at Cleveland Browns</option>
        <option>St. Louis Rams at Detroit Lions</option>
        <option>Miami Dolphins at Houston Texans</option>
        <option>San Francisco 49ers at Green Bay Packers</option>
        <option>Seattle Seahawks at Arizona Cardinals</option>
        <option>Carolina Panthers at Tampa Bay Buccaneers</option>
        <option>Pittsburgh Steelers at Denver Broncos</option>
        <option>Cincinnati Bengals at Baltimore Ravens</option>
        <option>San Diego Chargers at Oakland Raiders</option>
    </select>
    <select class="pick" name="pick1" id="pick1" style="visibility:hidden" onchange="javascript:cancel('1')">
        <option></option>
        <option></option>
        <option>Cancel</option>
    </select>

目前正在对IE8进行测试。

基于.value.checked存在的其他问题,最好使用jQuery。

var str = $('#week'+weekNum).val();

如果切换到jQuery,您将节省大量时间。不要再担心IE的怪癖了(或者不再那么担心了)。

首先,要想在IE中获得.value,您需要将其实际放入您的html:中

<option value="Dallas Cowboys at N.Y. Giants">Dallas Cowboys at N.Y. Giants</option>

第二,不存在"可见性=无"。试试这个:

document.getElementById('week'+weekNum).style.visibility = "hidden"

相关内容

最新更新