Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Niepożądane wielokrotne utworzenie elementu
bartkowiakmateus...
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 7.01.2010
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Witam, jestem początkujący w dziedzinie JavaScriptu i mam pewien problem, będę wdzięczny za pomoc.

Zadaniem skryptu, który napisałem, jest pobranie danych poprzez Ajax, a następnie utworzenie diva i umieszczenie w nich tych danych. Skrypt działa prawidłowo, jest on wykonywany po kliknięciu w odnośnik (zdarzenie onClick). Problem polega na tym, że przy kilkukrotnym szybkim kliknięciu w ten odnośnik tworzy się więcej niż 1 div. Próbowałem sprawdzać przed wykonaniem kodu czy obiekt, który tworzę już istnieje, jednakże nie odniosło to skutku.

[JAVASCRIPT] pobierz, plaintext
  1. if (!document.getElementById('div_id'))
  2. {
  3. data = do_ajax();
  4. div = document.createElement('div');
  5. div.id = 'div_id';
  6. div.InnerHTML = data;
  7. document.getRootElement().appendChild(div);
  8. }
[JAVASCRIPT] pobierz, plaintext


Będę wdzięczny za wskazanie możliwości rozwiązania problemu, pozdrawiam

Mateusz Bartkowiak
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


ech - nie ma całości kodu a w ajaxie mało robiłem ale z tego co widzę 2 razy wywołałeś funkcję która w środku czeka dopiero na odpowiedź asynchronicznego ajaxa wywołując funkcję do_ajax() w której jest jakiś return (dlatego jest w porządku jeśli wolniej klikniesz) - zamiast sprawdzać, czy został utworzony już obiekt to na początku funkcji przypisz wartość jakiejś zmiennej będącej w zasięgu tej funkcji jednak poza nią - zrób jakiś kontroler czy już funkcja została wywołana i jeśli została wywołana przerwij działanie funkcji - na 99% to rozwiąże problem...

lub nie wiem jak masz podpięte zdarzenie, czy przez samą metodę .onclick - jeśli tak to na poczatku wywołania pierwszy raz funkcji wyzeruj tą metodę, a jeśli przez .addEventListener to zastosuj .removeEventListener
Go to the top of the page
+Quote Post
bartkowiakmateus...
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 7.01.2010
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Witam, dziękuję za odpowiedź, chyba udało mi się rozwiązać problem. Korzystałem już wcześniej ze zmiennej, która określała, czy obiekt jest aktualnie schowany czy pokazany, jednak nie dawało to zamierzonego efektu, w przypadku gdy kliknięcia następowały bardzo szybko po sobie. Wygląda na to, że działo się tak dlatego, ponieważ przypisanie do zmiennej wartości informującej o wywołaniu funkcji następowało dopiero po pobraniu danych przez Ajaxa, a kolejne kliknięcia następowały przed pierwszym przypisaniem wartości do zmiennej.

Pozdrawiam, Mateusz Bartkowiak
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 21:36