0

良い一日、

私は Javascript と Dojo を学習している初心者で、通常は実行中のコードの他の部分を分解して学習します。

次のコード ( ArcGIS Sandboxから)から部分文字列値を取得する方法について混乱しています。

    <!DOCTYPE html>
      <html>
        <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
          <meta http-equiv="X-UA-Compatible" content="IE=7, IE=9, IE=10">
          <!--The viewport meta tag is used to improve the presentation and behavior of the samples 
            on iOS devices-->
          <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
          <title>Query State Info without Map</title>

          <script src="http://js.arcgis.com/3.6/"></script>
          <script>
            dojo.require("esri.tasks.query");
            dojo.require("esri.map");

            var queryTask, query;
            require([
              "esri/tasks/query", "esri/tasks/QueryTask",
              "dojo/dom", "dojo/on", "dojo/domReady!"
            ], function(
              Query, QueryTask,
              dom, on
            ){
              queryTask = new QueryTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5");

              query = new Query();
              query.returnGeometry = false;
              query.outFields = ["SQMI","STATE_NAME","STATE_FIPS","SUB_REGION","STATE_ABBR","POP2000","POP2007","POP00_SQMI","POP07_SQMI","HOUSEHOLDS","MALES","FEMALES","WHITE","BLACK","AMERI_ES","ASIAN","OTHER","HISPANIC","AGE_UNDER5","AGE_5_17","AGE_18_21","AGE_22_29","AGE_30_39","AGE_40_49","AGE_50_64","AGE_65_UP"];

              on(dom.byId("execute"), "click", execute);

              function execute(stateName) {
                query.text = dom.byId("stateName").value;
                //execute query
                queryTask.execute(query, showResults);
              }

              function showResults(results) {
                var s = "";
                for (var i=0, il=results.features.length; i<il; i++) {
                  var featureAttributes = results.features[i].attributes;
                  for (att in featureAttributes) {
                    s = s + "<b>" + att + ":</b>  " + featureAttributes[att] + "<br>";
                  }
                  s = s + "<br>";
                }
                dom.byId("info").innerHTML = s;
              }
            });
          </script>
        </head>
        <body>
          US state name : 
          <input type="text" id="stateName" value="California">
          <input id="execute" type="button" value="Get Details">
          <br />
          <br />
          <div id="info" style="padding:5px; margin:5px; background-color:#eee;">
          </div>
        </body>
      </html>

私がやりたいのは、入力を分解することだけです (この場合は、カリフォルニアという単語である id="stateName")。

ばかげた例は、次のコードを置き換えて、誰かが「カリフォルニアは西海岸にあります」と入力したときの最初の 10 文字を取得することです。

     query.text = dom.byId("stateName").substring(0,10);

これは本当に他のクエリをサポートできるようにするためですが、この入力で部分文字列を実行できれば、他の属性をクエリするときはいつでも同じになると考えました。

初心者のために前もってありがとう!

4

3 に答える 3

0

コメントに記載されているように、 を呼び出すと、.value必要なものが提供されます。Substring は文字列プロトタイプのメソッドです ここを参照してください。ただし、dom.byIdは domNode を返します。domNode 自体の部分文字列は必要ありません。domNode のテキスト値の部分文字列が必要です。入力では、これは簡単に実行でき、.value一般に.textContentandでも実行.innerHTMLされます。

于 2013-09-20T21:46:35.533 に答える