2016-11-06 165 views
0

我有一個html表單元素,其值設置爲一個數組。我想通過jQuery從數組中獲取其中的一個值。這是如何完成的?這是我的代碼。如果我的解釋不清楚,也許它可以說明問題。謝謝!如何從表單元素的值中的數組中獲取數組元素?

var lat = 0; 
    var long = 0; 

    //gets the latitude and longitude when a user clicks on any place on the map 

    map.on('click', function(e) { 
     lat = e.latlng.lat; 
     long = e.latlng.lng; 

    //store the lat and long in an array 

     var latlong = [lat, long]; 

    //here I am setting the value of my an element in my form as the array of lat and long 

     document.getElement(".<?= $this->getName() ?>").set("value", latlong); 
     var getLatlong = jQuery(".<?= $this->getName() ?>").val(); 
     console.log("retrieved: " + getLatlong); 

    //it saves and retrieves properly. 

    //THE PROBLEM IS HERE 
    //THE PROBLEM IS HERE 
     var lat = $(".<?= $this->getName() ?>").val()[0]; 
     var long = $(".<?= $this->getName() ?>").val()[1]; 
    //THE PROBLEM IS HERE 
    //THE PROBLEM IS HERE 


    }); 

這一切都運行良好,但我沒有得到reuslt我想要的。如果我嘗試使用任何的代碼行的下面

//THE PROBLEM IS HERE 
     var lat = $(".<?= $this->getName() ?>").val()[0]; //returns 9 
     var long = $(".<?= $this->getName() ?>").val()[1]; //returns 4 
     var long = $(".<?= $this->getName() ?>").val()[3]; //returns 2 
     var long = $(".<?= $this->getName() ?>").val()[4]; //returns 3 
    //THE PROBLEM IS HERE 

得到無論是緯度或經度「即:94.2323,12.9932」

The index [0] returns 9, 
the index [1] returns 4, 
the index [3] returns 2 

彷彿94.2323是陣列,而不是經緯度和陣列長度。我想[0]返回94.2323,[1]返回12.9932。

我試着解釋這一點,並盡我所能格式化這個問題。謝謝。

+1

你一遍又一遍地定義相同的變量轉換?不要這樣做。改用新的變量名稱。無論代碼塊中你定義它們的位置在哪裏,JavaScript實際上都會先運行所有的'var'語句,然後再執行其餘的代碼(在該範圍內)。 –

回答

1

您可以使用JSON.stringify()轉換ArrayJSON格式

document.getElement(".<?= $this->getName() ?>") 
.set("value", JSON.stringify(latlong)); 

JSON.parse()JSON格式化StringArray

var getLatlong = JSON.parse(jQuery(".<?= $this->getName() ?>").val()); 
console.log(getLatlong[0], getLatlong[1]); // do stuff 
+0

好的這適用於Javascript。萬分感謝。雖然它不能完全解決我想解決的問題。我怎麼可以在PHP中寫這個? –

+0

$ info-> latitude = $ _REQUEST [「mapquestlocation」] [0]; $ info-> longitude = $ _REQUEST [「mapquestlocation」] [1]; –

+0

'''緯度','經度'返回什麼? – guest271314

相關問題