1

私は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;
    }
}

IEで失敗し、var str = document.getElementById('week'+weekNum).value;空白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でテストが行​​われています。

4

2 に答える 2

1

.valueとに問題がある他の質問に基づいて、.checkedjQueryを使用するのが最善です。

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

jQueryに切り替えると、多くの時間を節約できます。IEの癖についてもう心配する必要はありません(またはそれほど心配する必要はありません)。

于 2012-08-21T13:45:06.907 に答える
1

まず、IEで.valueを機能させるには、実際にそれをhtmlに入れる必要があります。

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

2番目-「visibility=none」はありません。代わりにこれを試してください:

document.getElementById('week'+weekNum).style.visibility = "hidden"
于 2012-08-21T13:51:16.647 に答える