2012-05-06 39 views
0

我不知道爲什麼我得到錯誤信息(遺漏的類型錯誤:數量不是一個函數),這是我的代碼位:JAVASCRIPT - >爲什麼我會收到錯誤消息「Uncaught TypeError:number is 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'); 

回答

0

錯誤引發,因爲cd變量。你使用括號,但它不是正確的。 按照你dataparse方法cd變量應該是這樣的:

var cd = "30.40545181622765, -9.582610613708539\n"+ 
    "30.405229737948233, -9.577975756530805\n"+ 
    "30.40300892737293, -9.577546603088422\n"+ 
    "30.402268645956614, -9.584241396789594"; 

UPDATE:但是你可以重寫你的代碼更漂亮的形式:

function dataparse(points) { 
    var pntar = []; 
    for (var i = 0; i < points.length; i++) { 
     pntar.push(new google.maps.LatLng(points[i][0], points[i][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

(30.40545181622765, -9.582610613708539)評估爲-9.582610613708539

與下一行一起,它被解釋爲

-9.577975756530805(30.405229737948233, -9.577975756530805)

哪一個當然因爲-9.577...不是功能而失敗。

1
  1. dataparse功能需要一個字符串,給出points.substr(0,points.length - 1)
  2. 初始化CD作爲一個數組,但是解析器嘗試執行(num1, num2) (num3, num4)的功能(參見GGG對原因的答案)。
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; 
} 
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/

0

1 misake:

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

Javascript數組已經用逗號隔開,而不是用換行!

+1

這隻會給你一個值的數組,例如:「(數字」,「數字」(數字),「數字」(數字)等等括號在Javascript中的數組聲明中沒有位置 – Death

+0

除非你正在使用tanary:'(point?point:「30.4343」)' – drinchev

0

您誤解了所需的語法,並導致大量錯誤,即試圖將您的變量解釋爲函數。

在Javascript中,var=[val,val2]構造創建一個數組。你試圖把括號中的內容當作一個字符串來處理,並且像這樣分割它。

一種更好的方式來存儲陣列將是:

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

你的函數然後可以寫爲:

function dataparse(linar) { 
    var wrkar = [] ; 
    var pntar = [] ; 
    for (var i = 0; i < linar.length; i++) { 
     wrkar = linar[i];    // Break each point into x and y 
     pntar.push(new google.maps.LatLng(parseFloat(wrkar[0]),parseFloat(wrkar[1]))); 
    } 
    return pntar ; 
}  

linar是一個數組的數組,每次循環遍歷數組,它將下一個數組設置爲wrkar的值,從而爲您提供xy座標。

相關問題