我使用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"