2012-08-09 98 views
0

你好,我試圖通過調用一個函數在循環外部將這兩個位置的id保存到一個數組中。問題是它給了我一個錯誤,說loc不是一個函數。有誰知道問題在哪裏?爲什麼它說loc不是函數

var geocoder; 
var map, x, y; 
var loc = []; 
geocoder = new google.maps.Geocoder(); 
// var address = document.getElementById("address").value; 
// var user='33936357'; 
$.getJSON("http://api.twitter.com/1/users/lookup.json?user_id=33936357,606020001&callback=?", function (data) { 
    $.each(data, function (i, item) { 
     var screen_name = item.screen_name; 
     var img = item.profile_image_url; 
     var location = item.location; 
     geocoder.geocode({ 
      address: location 
     }, function (response, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       var x = response[0].geometry.location.lat(), 
        y = response[0].geometry.location.lng(); 
       loc(x, y); 

      } else { 
       alert("Geocode was not successful for the following reason: " + status); 
      } 
     }); //GEOCODER.GEOCODE 
    }); 

    function loc(x, y) { 
     loc.push({ 
      latitude: x, 
      longitude: y 
     }); 
    } 
    console.log(loc); //$.EACH 
}); //.GETJSON 
} //CODEADDRESS 
+1

您似乎已通過修改代碼來刪除問題而使問題失效。請恢復不正確的代碼,以便答案有意義(然後接受幫助您的答案)。 – 2012-08-09 10:48:38

回答

0

您聲明瞭一個名爲loc的數組。爲數組變量使用不同的名稱,或更改函數名稱。

你的問題是象下面這樣:

​var foo = []; 
function foo() { 
    foo.push(1);  
} 
foo(); // here foo is the array [] 
0

這裏祿是一個數組:

var loc=[]; 

這裏LOC是一個函數:

function loc(x,y){loc.push({latitude:x,longitude:y});} 

在這行做您的調試器報告錯誤?

+0

on this line location(x,y);調用函數 – 2012-08-09 10:36:20

+0

的地方在修改代碼後是否發生了錯誤? – geocodezip 2012-08-09 10:49:02

+0

是的,但現在它不保存任何東西到數組 – 2012-08-09 10:55:03

0

$.each()回調函數創建一個局部變量:

var location = item.location; 

...具有相同的名稱聲明$.each()功能location()。通過重新使用名稱,內部變量「屏蔽」外部函數。

所以你得到關於它不是一個函數的錯誤,因爲在該回調的範圍內,location引用了不是函數的局部變量。

只需更改變量或函數的名稱即可。

+0

我改變了變量的名稱,但現在它給了我一個空array.it不保存任何東西 – 2012-08-09 10:48:15

+0

我懷疑問題是'geocoder.geocode()'函數是異步因此它會調用你的回調函數在你運行'console.log(loc)'語句之後添加項目到數組__。 (你可以通過在'location()'函數中加入'console.log(x)'來確認這一點。) – nnnnnn 2012-08-09 10:51:01

+0

不,它沒有定義x沒有定義 – 2012-08-09 10:54:22

相關問題