Wczytanie skryptu javascript z pliku nie działa

Odpowiedz Nowy wątek
2017-08-12 14:31
0

Witam

Dodałem do pliku zewnętrznego taki kod

var myFirstVar = 25;
    document.getElementById("start-demo-3").innerHTML = myFirstVar;

i w pliku index.html umieściłem

<p id="start-demo-3"></p>

Jaka może być przyczyna że to nie działa? Inny skrypt z tego pliku działa prawidłowo. Oczywiście w head zaincludowałem plik <script src="./js/skrypt.js"></script>

Pozostało 580 znaków

2017-08-12 14:59
1

Pokaż cały minimalny kod reprezentujący problem.


Pozostało 580 znaków

2017-08-12 20:18
2

Oczywiście w head zaincludowałem plik

Head jest przed body, więc skrypty w head wczytują się zanim się wczyta to, co jest w body. Czyli document.getElementById zapewnie nie znajdzie elementu, który nie istnieje. Można temu zapobiec albo nasłuchując odpowiednie zdarzenie (https://developer.mozilla.org[...]s/Web/Events/DOMContentLoaded albo to: https://developer.mozilla.org/en-US/docs/Web/Events/load ) albo po prostu możesz przesunąć skrypt gdzieś pod koniec body, wtedy zanim się wczyta skrypt, to już będzie istniał ten element, wtedy nie będzie potrzebne nasłuchiwanie tego zdarzenia.

Tak przypuszczam, że to to, bo nie dałeś wiele informacji.

Jaka może być przyczyna że to nie działa? Inny skrypt z tego pliku działa prawidłowo.

następnym razem otwórz konsolę błędów w przeglądarce (gdzieś w narzędziach dla programistów, albo coś w tym stylu) i zobacz jaki konkretnie błąd wyskakuje.

edytowany 2x, ostatnio: LukeJL, 2017-08-12 20:20

Pozostało 580 znaków

2017-08-12 21:30
0
LukeJL napisał(a):

Oczywiście w head zaincludowałem plik

Head jest przed body, więc skrypty w head wczytują się zanim się wczyta to, co jest w body. Czyli document.getElementById zapewnie nie znajdzie elementu, który nie istnieje. Można temu zapobiec albo nasłuchując odpowiednie zdarzenie (https://developer.mozilla.org[...]s/Web/Events/DOMContentLoaded albo to: https://developer.mozilla.org/en-US/docs/Web/Events/load ) albo po prostu możesz przesunąć skrypt gdzieś pod koniec body, wtedy zanim się wczyta skrypt, to już będzie istniał ten element, wtedy nie będzie potrzebne nasłuchiwanie tego zdarzenia.

Tak przypuszczam, że to to, bo nie dałeś wiele informacji.

Jaka może być przyczyna że to nie działa? Inny skrypt z tego pliku działa prawidłowo.

następnym razem otwórz konsolę błędów w przeglądarce (gdzieś w narzędziach dla programistów, albo coś w tym stylu) i zobacz jaki konkretnie błąd wyskakuje.

Tak sprawdziłem w konsoli i jest błąd :

TypeError: document.getElementById(...) is null

Wkleiłem includowanie skryptu za

<p>

gdzie ma być uruchamiany w sekcji body i zaczęło działać.

Tylko dziwne że drugi skrypt który też jest w body i zaincludowałem w head działa poprawnie.

edytowany 4x, ostatnio: LynxBings, 2017-08-12 21:31

Pozostało 580 znaków

2017-08-12 23:03
0

a co jest w tym drugim pliku?

Pozostało 580 znaków

2017-08-13 11:42
0

https://jsfiddle.net/k7m7nnc5/1/

Tutaj działa

edytowany 1x, ostatnio: WeiXiao, 2017-08-13 11:43

Pozostało 580 znaków

2017-08-14 08:18
0

Dodałem

<script src="./js/skrypt.js"></script>

W sekcji <body> poniżej >

<p id="start-demo-3"></p>

i pomogło.

edytowany 3x, ostatnio: LynxBings, 2017-08-14 08:19

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0