2017-04-06 45 views
1

我有一個彈出窗體,當點擊Leaflet貼圖中的特定標記時出現。表單完成後,我想將輸入的字段以及有關標記的一些詳細信息發送到單獨的函數。我剛開始只是發送標記來測試它,但我遇到了一個問題。在OnClick中傳遞標記作爲變量返回[Object object]而不是標記對象

但是當我通過函數傳遞標記並通過console.log運行它時,它將返回[Object object]而不是帶有緯度,經度和其他東西的細節的標記。

var newMarker = new VietMarker (map.getCenter(), { 
    draggable: true 
}); 

var popupHTML = '<form id="add-marker-form">' + 
         '<div class="form-group">' + 
          '<label for="marker-title">Title</label>' + 
          '<input type="text" class="form-control" id="marker-title" required="true">' + 
         '</div>' + 
         '<div class="form-group">' + 
          '<label for="marker-contributor">Contributor</label>' + 
          '<input type="text" class="form-control" id="marker-contributor">' + 
         '</div>' + 
         '<div class="form-group">' + 
          '<label for="marker-yt-link">Video link</label>' + 
          '<input type="text" class="form-control" id="marker-yt-link">' + 
         '</div>' + 
         '<div class="form-group">' + 
          '<label for="marker-description">Description</label>' + 
          '<textarea class="form-control" rows="3" id="marker-description"></textarea>' + 
         '</div>' + 
         '<input type="button" id="marker-submit" class="btn btn-primary btn-block" onClick="testMarker(\'' + newMarker + '\');" value="Add to Map" />' + 
       '</form>'; 

newMarker.bindPopup(popupHTML).addTo(map); 

在我testMarker()函數:

function testMarker (markerToAdd) { 
    console.log(markerToAdd); 
} 

返回[Object對象]中的console.log,沒有子域,而不是一個標記對象。

+0

我沒有看到你調用'testMarker'。這隻會控制你傳遞給它的任何東西。爲什麼即使有這樣的功能? – PHPglue

+0

我在窗體末尾用我的按鈕調用'testMarker'。語法非常長,所以它是水平滾動的。我有這個功能,因爲我想知道它是否應該被傳遞 - 在控制檯中,我應該能夠看到標記的緯度和經度屬性 - 但它只是說[Object object],就是這樣。 – Vigilant

+1

嘗試運行'console.log(「一些字符串...」+ newMarker +「...另一個字符串」);',並且您將開始瞭解導致問題的原因:-) – IvanSanchez

回答

0

當您生成彈出式HTML時,連接運算符(+)會使您以字符串形式插入newMarker變量。這是錯誤的。此時,newMarker被轉換爲一個字符串,插入的值爲"[Object object]"

您需要找到另一種方法將標記傳遞給您在按鈕單擊時調用的函數。

你可以有標記的哈希表:

markers = {}; 
markers['new'] = new VietMarker (map.getCenter(), { 
    draggable: true 
}); 

var popupHTML = '<form>.........'+ 
       '<input type="button" id="marker-submit" class="btn '+ 
       'btn-primary btn-block" onClick="testMarker(\'new\');" '+ 
       'value="Add to Map" />'; 

markers['new'].bindPopup(popupHTML).addTo(map); 

function testMarker (id) { 
    console.log(markers[id]); 
} 
相關問題