Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][DOM] Całkowite usunięcie węzła
gebp
post 1.04.2009, 23:02:32
Post #1





Grupa: Zarejestrowani
Postów: 180
Pomógł: 6
Dołączył: 10.04.2006

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


Do swojej stronki zrobiłem sobie funkcje (opartą o DOM) do usuwania węzłów (elementów o danym id).
Funkcja wygląda następująco
Kod
function remover(id)  // usuń element o (id)
{ var todelete=$(id);
  var nad=todelete.up(); //element nadrzędny
    
  nad.removeChild(todelete);
}

* $() i up() są to funkcje używanej przez mnie klasy ajaxa; dają dostęp do drzewa DOM; $() = document.getElementById()

Czytając o metodzie removeChild() natknąłem się na zapis że metoda nie usuwa całkowicie danego węzła z drzewa DOM a jedynie z dokumentu (w moim przypadku html).

Moje pytanie brzmi:
Jak usunąć węzeł "PERNAMETNIE" ?
Bo w tym momencie jeżeli wstawię nowy np. div to "uruchamia" mi się ten usunięty węzeł.
Go to the top of the page
+Quote Post
nospor
post 2.04.2009, 21:23:18
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
to "uruchamia" mi się ten usunięty węzeł.
"Uruchamia" czyli co?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
pi_wo
post 2.04.2009, 21:53:04
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 6
Dołączył: 18.03.2009

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


Strzelam:

Ajax buforuje tworzone przez siebie obiekty i ich atrybuty niezależnie od Nodelist (czy też, jak wolisz drzewa DOM). Jeżeli korzystasz z gotowego framework'a sprawdź czy nie ma on odpowiedniej funkcji do usuwania obiektów.

PS> Przyłączam do pytania nospor'a smile.gif
Go to the top of the page
+Quote Post
gebp
post 4.04.2009, 20:29:34
Post #4





Grupa: Zarejestrowani
Postów: 180
Pomógł: 6
Dołączył: 10.04.2006

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


Przepraszam za wprowadzenie w błąd. Źle rozpoznałem problem.
Przeczytałem gdzieś że polecenie removeChild() nie usuwa całkowicie węzła z drzewa DOM i tym się sugerując wyciągnąłem błędne wnioski.
Sprawa dotyczyła podmiany <img> w <div>.
Jak się okazało problem był z cachem przeglądarki.
Wszystkie sposoby ( czyli nagłówki <meta> i nie tylko ) jak dało się wykorzystać nie sprawdzały się w Firefoxie. Nawet po zastosowaniu się do porad w tym temacie.

Problem rozwiązałem ale czuje pewien nie dosyt.

Problem następujący:
(wszystko robimy za pomocą AJAX)
W divie znajduje się <img>
Za pomocą AJAX'a usuwamy z diva ten <img> a następnie ładujemy nowy i "wstrzykujemy" (innerHTML) w miejsce poprzedniego.
Utrudnienie: stary jak i nowy <img> musi posiadać tą samą nazwę i znajdować się w tym samym miejscu (na dysku), pomimo że to dwa różne obrazki ( w moim przypadku miały także takie same wymiary) .
O ile za pomocą <meta> IE reagował poprawnie czyli wyświetlał nowy obrazek (pomimo tej samej nazwy i lokalizacji), o tyle Firefox uparcie się trzymał i wyciągał wszystko z swojego cache'a.

Problem rozwiązałem nadając obrazkom unikatowe nazwy ale ... i tu mnie Firefox bardzo zniesmaczył.

Jeszcze raz przepraszam za wprowadzenie w błąd.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 12:41