Javascript函数在IE中工作,但在FF,Chrome或Mobile Safari中不起作用

Javascript functions working in IE but not in FF, Chrome, or Mobile Safari

本文关键字:Chrome Mobile Safari 不起作用 FF 但在 IE 函数 工作 Javascript      更新时间:2023-09-26

我有一个使用Javascript的HTML页面,它在IE中工作正常,但在Firefox,Chrome或Safari中不太有效。 我的代码动态将数据添加到IE的下拉列表中,但我猜我的语法不太适合FF,Chrome或Safari? 在FF,Chrome,Safari中,下拉框仅显示硬编码值,并且永远不会在前面提到的3个浏览器中更新。 假设我的数组在 FF 或 Chrome 中正确填充,那么我猜我用来将数据添加回下拉框的方法不是按照 FF 或 Chrome 喜欢的方式编写的?

<script type="text/javascript">
dojo.require("esri.map");
    dojo.require("esri.tasks.route");
    dojo.require("esri.tasks.query");
var dynamicarray = [];
    queryTask.execute(query, showResults);
function showResults(results) {  //This is where I can add values to dropdown in IE
    var featureAttributes;
    var addoffices = document.getElementById("Office");
    var addrigs = document.getElementById("Rigs");
    for (var i = 0, il = results.features.length; i < il; i++) {
        featureAttributes = results.features[i].attributes;
        for (att in featureAttributes) {
            dynamicarray.push(featureAttributes[att]);
            if (isNaN(featureAttributes[att])) {
                addrigs.options.add(new Option(featureAttributes[att], att));
            }
            if (isNaN(featureAttributes[att])) {
                addoffices.options.add(new Option(featureAttributes[att], att));
            }
        }
     }
    }
function officeval() {

    d = document.getElementById("Office");
    var de = d.options[d.selectedIndex].text;
    addStop(de);                    

    }

 function addStop(evt) {
    var lat;
            var lon;
            var dar;
            for (dar in dynamicarray) {
                if (dynamicarray[dar] == evt) {
                    lon = dynamicarray[dar - 1]; //Get Longitude value
                    lat = dynamicarray[dar - 2]; //Get Latitude value
                    var inPoint = new esri.geometry.Point(lon, lat, map.spatialReference);
                    var stop = map.graphics.add(new esri.Graphic(inPoint, stopSymbol));
                    routeParams.stops.features.push(stop);
                    map.graphics.add(new esri.Graphic(new esri.geometry.Point(lon, lat, map.spatialReference), textSymbol));
                    break;
                }
            }
}
</script>
From: 
<SELECT id="Office" SIZE=0 onchange="officeval()">
<OPTION VALUE="0">
<OPTION VALUE="1"> Some Office
    <OPTION VALUE="2"> Warehouse Yard
</SELECT>

它仅适用于Internet Explorer,因为您使用的是不兼容的代码

用:

try {
    addrigs.options.add(new Option(featureAttributes[att], att), null); // standards compliant; doesn't work in IE
}
catch(ex) {
    addrigs.options.add(new Option(featureAttributes[att], att)) // IE only
}

见 http://www.dzone.com/snippets/htmljavascript-select-list