0

エラーメッセージ (Uncaught TypeError: number is not a function) が表示されるのはなぜだろうか、これは私のコードです:

<script type = "text/javascript">
  function dataparse(points)
   {
      points = points.substr(0, points.length - 1);
      var linar = points.split("\n");
      // Break each point by line break
      var wrkar = [];
      var pntar = [];
      for (var i = 0; i < linar.length; i++)
      {
          wrkar = linar[i].split(",", 2);
          // Break each point into x and y
          pntar.push(new google.maps.LatLng(parseFloat(wrkar[0]), parseFloat(wrkar[1])));
      }
      return pntar;
  }


  var cd = [
  (30.40545181622765, -9.582610613708539)
  (30.405229737948233, -9.577975756530805)
  (30.40300892737293, -9.577546603088422)
  (30.402268645956614, -9.584241396789594)
  ];

  var df = dataparse(cd);
  alert('df');
4

7 に答える 7

4

(30.40545181622765, -9.582610613708539)に評価されます-9.582610613708539

次の行と合わせて、次のように解釈されます。

-9.577975756530805(30.405229737948233, -9.577975756530805)

関数ではないため、もちろん失敗し-9.577...ます。

于 2012-05-06T10:20:48.403 に答える
1
  1. あなたのdataparse関数は、与えられた文字列を期待していますpoints.substr(0,points.length - 1)
  2. cd を配列として初期化しますが、パーサーは(num1, num2) (num3, num4)関数として実行しようとします (理由については GGG の回答を参照してください)。
于 2012-05-06T10:22:48.900 に答える
0

ポイント配列が無効です。ポイント自体に角括弧を使用し、コンマで分割する必要があります

var cd = [
    [30.40545181622765, -9.582610613708539],
    [30.405229737948233, -9.577975756530805],
    [30.40300892737293, -9.577546603088422],
    [30.402268645956614, -9.584241396789594]
];

dataparseそれに伴い、配列を正しく処理するために関数を変更 (単純化) する必要があります。

function dataparse(points) {
    var i,
        length,
        pntar = [];

    for (i = 0, length = points.length; i < length; i++) {
        pntar.push(new google.maps.LatLng(points[i][0], points[i][1]));
    }

    return pntar;
}
于 2012-05-06T10:23:27.223 に答える
0

括弧内のすべての数値が評価されるため、これを取得しています。関数が受け入れる適切な引数に置き換える必要があります... を使用しているためですがsubstr、実際には配列を渡したい場合は、関数にコードを追加する必要があります同じように :

function dataparse(pairs)
{
    for ( i=0; i < pairs.length ; i++ ) {
       var wrkar = pairs[i].split(", ",2);
       var pntar = [] ;
       pntar.push( new google.maps.LatLng(parseFloat(wrkar[0]), parseFloat(wrkar[1])) ); 
       return pntar;
    }    
}


var cd = [
        "30.40545181622765, -9.582610613708539",
        "30.405229737948233, -9.577975756530805",
        "30.40300892737293, -9.577546603088422",
        "30.402268645956614, -9.584241396789594"
];

var df = dataparse(cd);
alert('df');​

ここにjsfiddleがありますhttp://jsfiddle.net/ptQfc/

于 2012-05-06T10:23:38.010 に答える