Ich versuche, wenn der tr geklickt wird, einen neuen Tab mit einer Adresse zu öffnen, das ist eine Google Maps-Adresse mit den Variablen aus dem Code dazwischen.Wie wird eine Verknüpfung innerhalb einer .click-Funktion in einer Schleife für ein Array erstellt?
Ich habe dieses HTML:
<tr>
<td>
<span class="place-address">A Street, 608, City</span>
<a class="link-maps"></a>
</td>
</tr>
<tr>
<td>
<span class="place-address">A Street, 998, City</span>
<a class="link-maps"></a>
</td>
</tr>
<tr>
<td>
<span class="place-address">A Street, 226, City</span>
<a class="link-maps"></a>
</td>
</tr>
Und dieses JavaScript in jQuery:
var addressesArray = [];
var linkMapsArray = [];
var placeAddress = $(".place-address").each(function() {
var addresses = $(this).text();
addressesArray.push(addresses);
});
var linkMaps = $(".link-maps").each(function() {
var links = $(this);
linkMapsArray.push(links);
});
var placesAddresses = addressesArray;
$(function() {
getLocation();
});
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(openMaps, showError);
} else {
alert("Your navigator doesn't support geolocation.");
}
}
function openMaps(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
for(j = 0; j < placesAddresses.length; j++) {
var address = placesAddresses[j];
linkMapsArray[j].closest("tr").click(function() {
window.open("https://www.google.com/maps/dir/" + latitude + "," + longitude + "/" + address + "/")
});
}
}
//omitted showError function
Ich will nicht die Link-Karten erscheinen, deshalb sind sie leer und mit einem sind display: none
in der CSS.
Das Ergebnis von all dem ist, dass, egal, welcher der tr's ich klicke, es mich immer zur Adresse des letzten bringen wird. Aber wenn ich den folgenden Code anstelle der Klick-Funktion setzen, zusammen mit display: block
in der CSS, es funktioniert, aber nur, wenn Sie auf den Link, aber ich will es arbeiten, wenn das tr klicken:
linkMapsArray[j].text(address);
linkMapsArray[j].attr("href", "https://www.google.com/maps/dir/" + latitude + "," + longitude + "/" + address + "/");
PS: Ich weiß, dass dieser letzte Code keine neue Registerkarte öffnet, aber es leitet richtig um.
Wie werden Sie rufen openMaps? Woher kommt der Parameter 'position'? – James
Ich habe den Code bearbeitet, um die Funktion, von der ich die Position bekomme, – allansanfer