• 循环动态生成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);
           }
         

  • 相关阅读:
    微软一站式示例代码库(中文版)2010年12月10日更新
    微软一站式示例代码库(中文版)2011年1月12日更新
    微软一站式示例代码库 MSDN 官方论坛今天正式上线
    微软一站式示例代码浏览器 第二版 CTP发布
    两边固定中间子适应的流式布局
    不使用第三个变量交换两个数字
    身份证号码15位转18位 C#实现
    利用AspNetPager分页
    C#面向对象高级语法(一)
    String.Empty、string=”” 和null的区别
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1977418.html
Copyright © 2020-2023  润新知