-
Data: 2018-11-19 09:31:47
Temat: Re: getElementById zwraca null
Od: Jivanmukta <j...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 19.11.2018 o 08:54, Jivanmukta pisze:
>
>> 3. Ponadto z nazwy w/w funkcji wnioskuję iż naruszasz strukturę DOM by
>> coś zanimować. Nie wiem jak konkretnie animujesz więc tylko zgaduję.
>> Jeśli np. używasz innerHTML gdzieś dalej do zapisu, to wtedy takie
>> cuda mogą się dziać. Nie należy używać do tego celu innerHTML bo jest
>> strasznie wolne gdyż wymusza odświeżanie _CAŁEJ_ struktury DOM. Wtedy
>> okresowo możesz tracić dostęp do DOM mimo iż pozornie wydaje Ci się,
>> że nic się w niej nie zmienia. To dość częsty błąd początkujących
>> programistów JS a i zaawansowani czasem też o tym nie wiedzą.
>>
>
> // Animuj literkę w napisie tytułowym:
>
> var letterIndex = -1;
> var mainTitle;
>
> function animateMainTitle() {
> 'use strict';
> if (mainTitle === undefined) {
> mainTitle = document.getElementById("main_title").innerHTML;
> }
> letterIndex = (letterIndex + 1) % mainTitle.length;
> var s = mainTitle.substr(0, letterIndex) +
> '<span class="selected_letter">' +
> mainTitle.substr(letterIndex, 1) +
> '</span>' +
> mainTitle.substr(letterIndex + 1);
> document.getElementById("main_title").innerHTML = s;
> setTimeout(animateMainTitle, 100);
> }
>
> Czy gdybym zamiast innerHTML umieścił wszystkie literki w span'ach i
> ustawiał tylko atrybut class odpowiedniej literki to byłoby lepiej?
Zrobiłem tak i jest dobrze:
var letterIndex = 0;
function animateMainTitle() {
'use strict';
document.getElementById('letter' + letterIndex).className = '';
letterIndex = (letterIndex + 1) % 24;
document.getElementById('letter' + letterIndex).className =
'selected_letter';
setTimeout(animateMainTitle, 100);
}
Dzięki za pomoc.
Następne wpisy z tego wątku
- 19.11.18 22:57 Marek S
- 17.12.18 15:04 Jivanmukta
Najnowsze wątki z tej grupy
- UWAGA: MAM PODEJRZENIE, ŻE onet.pl DOKONUJE ATAKÓW!!!
- Komisja sejmowa odrzuca petycję ws. obowiązkowych kanałów RSS na stronach podmiotów publicznych
- kol. sukces po polsku: "Samurai Labs. Technologia do zapobiegania samobójstwom"
- Wściekli obywatele spalili budynek parlamentu Nepalu [bo odcięli im amerykańskie serwery społecznościowe - przyp. JMJ]
- UWAGA: MAM PODEJRZENIE, ŻE trojmiasto.pl DOKONUJE ATAKÓW
- Cenzura na wolnemedia.net - likwidacja codziennej sekcji "Sygnały zauważone"
- Nowe style na energokod.pl
- Jak działa hosting w którym wykupuje się sam serwer i domenę, bez IP?
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Do sądu trafił pozew zbiorowy przeciw Google'owi - oskarżenie o praktyki monopolistyczne na rynku reklamy internetowej
- Jakie znacie działające serwery grup dyskusyjnych?
- is it live this group at news.icm.edu.pl
- php, linki z nazwami a $_GET, SEO
- www polityka pl captcha
- dyktatura brudnego palucha
Najnowsze wątki
- 2025-12-27 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-12-27 Ewakuacja ludności
- 2025-12-26 Gdańsk => ERP Microsoft Dynamics 365 Commerce Consultant <=
- 2025-12-26 Kraków => Konsultant Microsoft Dynamics 365 Finance <=
- 2025-12-26 Kraków => Microsoft Dynamics 365 Finance Consultant <=
- 2025-12-26 wymieniłem termostat
- 2025-12-26 Warszawa => Senior Backend Java Developer <=
- 2025-12-25 Finlandia przywraca swastykę
- 2025-12-25 Skuteczność wymiaru sprawiedliwości
- 2025-12-24 Felgi
- 2025-12-24 2,5 x więcej niż Li-Ion
- 2025-12-24 No i kolejny ograniczony
- 2025-12-24 Warszawa => Młodszy Specjalista ds. wsparcia sprzedaży <=
- 2025-12-24 New York Times zagrożeniem bezpieczeństwa narodowego USA - POTUS D. Trump
- 2025-12-24 Podżeganie?




7 pułapek i okazji - zobacz co cię czeka podczas kupna mieszkania na wynajem