在近期无锡网站建设的有一个网站中,就出现了ie和Firefox不兼容的情况,在这里我分享给大家,一起共同学习进步。 在ie中正常,代码如下: <SCRIPT language="javascript">
function city(name,value){ this.name=name; this.value=value; } var _province_cn = new Array( "北京", "上海", "广东省", "江苏省" ); var _city_cn = new Array(
new Array(new city('北京','050100')), new Array(new city('上海,'050400')), new Array(new city('广东省(全部地区)','050500'), new city('广州','050501'), new city('越秀区,'050521')),
new Array(new city('江苏省(全部地区)','050600'), new city('无锡,'050601'), new city('北塘区,'050621'))
);
function handleProvinceChangeEvent(src,des,selected,includeall){
if(!src.value) return; city = _city_cn[src.value]; if(!city || !des) return; oOs = des.options; while(oOs.length>0){ oOs.remove(0); } var i = 0; if(!includeall && city.length>1) i=1; for(;i<city.length;i++){ var oOption = document.createElement("OPTION"); oOption.text=city[i].name; oOption.value=city[i].value; if(selected) if(city[i].value==selected) oOption.selected=true; oOs.add(oOption); } } </SCRIPT>
<select name="province" id="province" onchange="handleProvinceChangeEvent(document.all.province,document.all.city,false,true)" > <option value="" selected="selected">请选择省份</option> <option value="0">北京</option> <option value="1">上海</option> <option value="2">广东省</option> <option value="3">江苏省</option> </select> <select name="city" id="city" > </select> 这段代码在ie中是正常的显示,可是在Firefox中就不正常了, 当我技术员在发现这一问题的时候也是多了做方面的调整,知道原因了就好研究解决了,在经过多次调试后,我们将代码改动如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> new document </title> <meta name="keywords" content="" /> <meta name="description" content="" /> <meta name="author" content="" /> </head> <body> <SCRIPT language="javascript">
function city(name,value){ this.name=name; this.value=value; } var _province_cn = new Array( "北京", "上海", "广东省", "江苏省" ); var _city_cn = new Array(
new Array(new city('北京','050100')), new Array(new city('上海,'050400')), new Array(new city('广东省(全部地区)','050500'), new city('广州','050501'), new city('越秀区,'050521')),
new Array(new city('江苏省(全部地区)','050600'), new city('无锡,'050601'), new city('北塘区,'050621'))
);
function handleProvinceChangeEvent(src,des,selected,includeall){
if(!src.value) return; city = _city_cn[src.value]; if(!city || !des) return; oOs = des.options; oOs.length=0; var i = 0; if(!includeall && city.length>1) i=1; for(;i<city.length;i++){ var oOption = document.createElement("OPTION"); oOption.text=city[i].name; oOption.value=city[i].value; if(selected) if(city[i].value==selected) oOption.selected=true; oOs.add(oOption); } } </SCRIPT>
<select name="province" id="province" onchange="handleProvinceChangeEvent(this,document.getElementById('city'),false,true)" > <option value="" selected="selected">请选择省份</option> <option value="0">北京</option> <option value="1">上海</option> <option value="2">广东省</option> <option value="3">江苏省</option> </select> <select name="city" id="city" > </select> </body> </html> 在改动后我们发现这个问题就出现在代码的不兼容上,在火狐浏览器下,不可以执行 document.createElement("OPTION"); 。对于下拉菜单<select 的 oOption.text 、oOption.value是不能执行的,还有.options.remove也不可以的。详见盒墩数联案例分析! 在此我们把这次原因分享出来时希望大家能共同学习,一起进步,将互联网事业做得更好!
本文由盒墩数联原创文章,如有转载请加上盒墩数联链接:http://www.hedun.net,谢谢合作! |