Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] błędne wywoływanie funkcji
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
ellheat
Witam. Od pewnego czasu zmagam się z pewnym problem. Chodzi o to, że mam taki oto kod napisany w js, który nie wymaga przeładowywania strony oraz dodaje animację chowania contentu:

[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function() {
  2.  
  3. var hash = window.location.hash.substr(1);
  4. var href = $('#nav li a').each(function(){
  5. var href = $(this).attr('href');
  6. if(hash==href.substr(0,href.length-5)){
  7. var toLoad = hash+'.html #content';
  8. $('#content').load(toLoad)
  9. }
  10. });
  11.  
  12. $('#nav li a').click(function(){
  13.  
  14. var toLoad = $(this).attr('href')+' #content';
  15. $('#content').slideUp('slow',loadContent);
  16. window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-15);
  17. function loadContent() {
  18. $('#content').load(toLoad,'',showNewContent());
  19. }
  20. function showNewContent() {
  21. $('#content').slideDown('slow');
  22. }
  23. return false;
  24.  
  25. });
  26.  
  27. });
[JAVASCRIPT] pobierz, plaintext



Wszystko pięknie działało dopóki nie zapragnąłem dodać mapy google. Aby prawidłowo ona się wyświetlała przez ten skrypt dodałem do powyższego kodu następujące polecenia:

[JAVASCRIPT] pobierz, plaintext
  1. function showNewContent() {
  2. $('#content').show('slow',mapaStart());
  3. }
  4. function mapaStart() {
  5. var wspolrzedne = new google.maps.LatLng(44.5296369,10.868598);
  6. var opcjeMapy = {
  7. zoom: 10,
  8. center: wspolrzedne,
  9. mapTypeId: google.maps.MapTypeId.ROADMAP
  10. };
  11. var mapa = new google.maps.Map(document.getElementById("mapka"), opcjeMapy);
  12. }
[JAVASCRIPT] pobierz, plaintext



kiedy mam funkcję mapaStart() wywoływaną w showNewContent wszystko się popsuło. Przy wybieraniu jakiejkolwiek z opcji w menu cały content chowa się, ale nie chce się rozwinąć. Efekt można zobaczyć na www.ellheat.pl/ferraria . Proszę o pomoc
IProSoft
A masz div o ID: mapka w kodzie strony ?
ellheat
dałeś mi troszkę do myślenia. Mam diva takiego, ale w podstronie contact.html. Znajduje się on na www.ellheat.pl/ferraria/contact.html . Troszkę dziwne bo jeżeli mam taki kod jak podałem tutaj na forum to mapka się nie wyświetla na tej podstronie. Jeżeli jednak usunę nawiasy z wywołania funkcji mapaStart

[JAVASCRIPT] pobierz, plaintext
  1. function showNewContent() {
  2. $('#content').show('slow',mapaStart);
  3. }
[JAVASCRIPT] pobierz, plaintext


To mapka się wyświetla. Jest tylko jeden problem. Skrypt działa dopóki nie najedzie się na podstrony, które są stworzone. W tym przypadku na Home i About. Następnie się wiesza.
IProSoft
Zacznij od utworzenia tego div przez jQuery i dopiero wtedy odpalaj skrypt mapy, dodatkowo zainstaluj Firebug do FF albo przez Chrome debuguj skrypt bo w tej chwili masz:
Kod
ReferenceError: mapaStart is not defined
mapaStart()
ellheat
dzięki wielkie działa jak należy tylko tak się zastanawiam czy da radę to zrobić to samo przez podzielnie tego skryptu (który odpowiada za dynamiczne przechodzenie pomiędzy stronami) na dwa podobne pliki. Do tej pory nie udało mi się tego jeszcze zrobić. Bo tak słabo troszkę jak każda podstrona będzie miała zbędny div, którego id będzie nazywał się mapka wink.gif
IProSoft
Raczej w niczym to nie przeszkadza, a jeśli już to można to obejść.

W JS przed wywołaniem mapy wstaw:
[JAVASCRIPT] pobierz, plaintext
  1. jQuery('<div/>', {
  2. id: 'mapka'
  3. }).appendTo('#content');
[JAVASCRIPT] pobierz, plaintext

trueblue
Cytat(ellheat @ 25.03.2014, 23:22:17 ) *
Bo tak słabo troszkę jak każda podstrona będzie miała zbędny div, którego id będzie nazywał się mapka wink.gif

Przecież sprawdzasz jaką podstronę masz załadować. Zrób warunek i dodawaj diva tylko wtedy kiedy ładujesz "contact".
ellheat
Cytat(IProSoft @ 25.03.2014, 23:33:32 ) *
Raczej w niczym to nie przeszkadza, a jeśli już to można to obejść.

W JS przed wywołaniem mapy wstaw:
[JAVASCRIPT] pobierz, plaintext
  1. jQuery('<div/>', {
  2. id: 'mapka'
  3. }).appendTo('#content');
[JAVASCRIPT] pobierz, plaintext


dzięki, ale nie za bardzo chce mi to rozwiązanie działać. Wstawiam ten kod w funkcji showNewContent() i nie chce działać zbytnio. Tak samo się dzieje jeżeli wstawię ten kod przed funkcją showNewContent().
trueblue
Wrzuć ten kod na stronę, którą podałeś w pierwszym poście.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.