Mam pewien dziwny problem z próbą ułożenia nieco dynamicznego ekranu w Mapach Google. Mam nakładki na mapie, którą chciałbym nazwać funkcją po kliknięciu. Początkowo miałem wszystko ciężko kodowane, więc miałem funkcję dla każdego nakładki jak ten:Jak mogę przekazać parametr do funkcji bez uruchamiania go od razu?
google.maps.event.addListener(southEast, 'click', showSouth);
function showSouth() {
// do stuff
}
To działało bez problemu, ale potem zrobiłem cała strona bardziej dynamiczny, więc postanowiłem zrobić jedną funkcję, która minie identyfikator, a następnie wyświetlaj w oparciu o to, i tak uważam, że i tak powinien był zostać utworzony pierwotnie. Zmieniłem kod, aby wyglądał mniej więcej tak:
google.maps.event.addListener(southEast, 'click', showArea(1));
function showArea(id) {
// do stuff based on that id
}
Funkcja zadziałała, ale problemem jest to, że zostanie wywołana natychmiast po wczytaniu strony. Po przeprowadzeniu badań nauczyłem się, że gdy wywołujesz funkcję z nawiasami, funkcja ta jest natychmiast wywoływana, a następnie zwracana jest jej wartość zwracana. source
Więc teraz trochę utknąłem, jak dokładnie przejść przez przekazywanie tego identyfikatora do funkcji bez wywoływania funkcji natychmiast. Znalazłem kilka hakerów, które mogą działać, ale czuję, że to nie powinno być coś, co muszę zhakować razem ...
Oba działają jak czar. Dziękuję bardzo! –
@MattMcClure: Nie ma za co. –
Dzięki @squint! Zwrócenie funkcji rozwiązało mój problem z wywołaniem funkcji na etapie inicjalizacji, a nie na etapie wykonywania. –