循环动态生成html并且绑定事件带参函数

有待解决。

已解决。

代码如下:

/*属性查询*/
       var searchResultContent = "";
       var position = 0;
       function attQuery(field, value, index, symbol,level,isClear,isLocate,isCatagory) {

           if (isClear == true) {
               map.graphics.clear();
           }
          
           if (isCatagory == false);
           {
               searchResultContent = ""
               position = 0;
           }

           var url = "http://meng/ArcGIS/rest/services/StatisticData/MapServer/" + index;
           var queryTask = new esri.tasks.QueryTask(url);
           var query = new esri.tasks.Query();
           query.returnGeometry = true;
           query.outFields = ["zonename", "type"];
           query.where = field + " Like '%" + value + "%'";

           dojo.connect(queryTask, "onComplete", function(featureSet) {

               var showXBExtent;
               searchResultContent = searchResultContent + "<h3>" + level + "</h3>";

               for (var i = 0, il = featureSet.features.length; i < il; i++) {
                   var graphic = featureSet.features[i];
                   graphic.setSymbol(symbol);

                   graphic.setInfoTemplate(statinfoTemplate);

                   map.graphics.add(graphic);
                   if (i == 0) {
                       showXBExtent = graphic.geometry.getExtent();
                   }
                   else {
                       showXBExtent = showXBExtent.union(graphic.geometry.getExtent());
                   }

                   searchResultContent = searchResultContent + "<A " +
                   "onclick = lightenGraphic(" + index + "," + position + ");" +
                   "onmouseout = unlightenGraphic();" +
                   "href=\"javascript:void(0)\";>" + graphic.attributes["zonename"] + "</A>" + "   ";        //循环动态生成html元素并且绑定事件处理方法 added by zhangjun
                   position = position + 1;
               }
               get_ImageStatistics_Infos(searchResultContent);
               if (isLocate == true) {
                   if (showXBExtent != null) {
                       map.setExtent(showXBExtent.expand(1.5));
                   }
               }
               else {
                   fullExtent();
               }
           });

 
           dojo.connect(queryTask, "onError",function(err) {
              alert(err.name + ":" + err.message);
            });
           queryTask.execute(query);
       }

       /*添加影像统计信息*/
       function get_ImageStatistics_Infos(response) {
           $('statistics_result').style.display = "block";
           $('statistics_result').innerHTML = response;
       }

       /*高亮显示graphic*/
       function lightenGraphic(index,position) {

           var  a, value = "";
           a = document.getElementById("statistics_result").getElementsByTagName("A");
           value = a[position].innerHTML;


           var symbol;
           switch (index) {
               case 0:
                   symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,
           new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
           new dojo.Color([0, 0, 0, 1]), 0.5), new dojo.Color([0, 255, 255, 1]));
                   break;
               case 1:
                   symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,
           new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
           new dojo.Color([0, 0, 0, 1]), 0.5), new dojo.Color([255, 0, 0, 1]));
                   break;

           }
          
           var lightSymbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,
           new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
           new dojo.Color([0, 0, 0, 1]), 0.5), new dojo.Color([255, 255, 0, 1]));

           for (var k = 0; k < map.graphics.graphics.length; k++) {
               if (map.graphics.graphics[k].attributes["zonename"] == value) {
                   map.graphics.graphics[k].setSymbol(lightSymbol);
                   graphicLocation = k;
                   map.setExtent(map.graphics.graphics[k].geometry.getExtent().expand(4));
                   setTimeout("recoverSymbol("+index+")", 800); //0.8秒
               }
           }

       }

       var graphicLocation;


       /*恢复symbol*/

     function recoverSymbol(index) {
           var symbol;
           switch (index) {
               case 0:
                   symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,
           new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
           new dojo.Color([0, 0, 0, 1]), 0.5), new dojo.Color([0, 255, 255, 1]));
                   break;
               case 1:
                   symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,
           new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
           new dojo.Color([0, 0, 0, 1]), 0.5), new dojo.Color([255, 0, 0, 1]));
                   break;

           }
           map.graphics.graphics[graphicLocation].setSymbol(symbol);
       }
     

原文地址:https://www.cnblogs.com/zhangjun1130/p/1977418.html