Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

Mały problem z document.createElement

Tworzenie dynamicznych stron internetowych z zastosowaniem JavaScript, jQuery, Ajax. Dowiedz się jak to zrobić, znajdź rozwiązania swoich problemów.

Mały problem z document.createElement

Post 05.06.2017, 19:42:09

Czesc,

Szybkie pytanie dotyczące tworzenia obiektu. Znalazałem ostatnio ciekawy sposób na rysowanie w js, docelowo chciałbym to osiągnąć w canvas, aczkolwiek chciałem zapytać o to dlaczego po ponownym kliknięciu element przestaje byc rysowany.

Po kliknięciu zaczynam skalować element, natomiast kiedy kliknę po raz kolejny, elementowi zostaje przypisany null. Nie rozumiem jednak dlaczego dzięki temu element przestaje byc rysowany.

http://jsfiddle.net/d9BPz/546/

Dziękuje i pozdrawiam!
whitty
Posty: 82
Dołączył(a): 12.07.2015

Re: Mały problem z document.createElement

Post 06.06.2017, 10:07:51

No właśnie dlatego, że przypisany jest null. Tracona jest referencja do obiektu, więc nie JS nie ma na czym operować.
kabexxx
Posty: 182
Dołączył(a): 27.11.2011

Re: Mały problem z document.createElement

Post 06.06.2017, 10:38:29

Rysowanie odbywa się wewnątrz onmousemove i polega (w uproszczeniu) na zmianie wysokości i szerokości elementu, który ma obramowanie ustawione w CSS. Jeśli zmienna element jest null, to wtedy nie mamy obiektu, któremu aktualizowalibyśmy wysokość i szerokość, więc funkcja szybko wychodzi. Zmienna jest ustawiana na nowy element (document.createElement) co drugie kliknięcie.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19503
Dołączył(a): 14.04.2002

Re: Mały problem z document.createElement

Post 06.06.2017, 15:59:41

Dziękuję za odpowedź. Niby oczywista sprawa, po prostu dziwiło mnie, że kiedy do utworzonego obiektu przypiszemy null, on ciagle istnieje w drzewie DOM.

Pozdrawiam!
whitty
Posty: 82
Dołączył(a): 12.07.2015

Re: Mały problem z document.createElement

Post 06.06.2017, 16:39:54

Zmienna "element" to tylko zmienna. Ma jakąś wartość. W przypadku tego kodu wartością jest referencja na element utworzony przez document.createElement albo null. Jak element został dodany do drzewa (np. poprzez appendChild), to będzie w tym drzewie siedział tak długo aż zostanie usunięty. A zmienna "element" w każdym momencie może wskazywać na ten lub dowolny inny element albo na nic i nie ma to wpływu na cykl życia tego elementu DOM, ponieważ jest wiele innych odniesień do tego elementu (bo istnieje drzewie a to znaczy, że jest referencja na niego w kolekcji children rodzica, previous/nextSibling otaczającego rodzeństwa), więc nie ma powodów, żeby silnik JS miał go usunąć z pamięci.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19503
Dołączył(a): 14.04.2002

Re: Mały problem z document.createElement

Post 06.06.2017, 17:59:12

Dziękuję Kuku za wytłumaczenie!

Pozdrawiam!
whitty
Posty: 82
Dołączył(a): 12.07.2015


Powrót do JavaScript


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości

Hosting, Domeny, SSL
iCash

Subskrypcja

Mamy 50037 zarejestrowanych użytkowników.
Najnowszy użytkownik: smoola


Nasi użytkownicy napisali:

  • 934651 wiadomości
  • w 246197 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)