• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Javascript - getElementById nie działa.

Cloud VPS
0 głosów
3,510 wizyt
pytanie zadane 31 października 2016 w JavaScript przez Dominik Kapek Nowicjusz (240 p.)
zmienione kategorie 31 października 2016 przez Arkadiusz Waluk

Witam, robię poradniki pana Mirosława i podczas 3 odcinka nie mogę wyświetlić zawartości zmiennej - próbowałem zrobić za pomocą funkcji - nie działa, bez funkcji - również nie działa. Żaden debugger nie zwraca błędów.

var haslo = "Bez pracy nie ma pieniedzy";
document.getElementById("haslo").innerHTML = haslo;
<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset="utf-8" />
	<title>Szubienica</title>

	<link rel="stylesheet" href="style.css" type="text/css" />
	<script src="szubienica.js"></script>

</head>
<body>
<div id="haslo"></div>

</body>
</html>

efekt:

http://scr.hu/7acv/ymc1k
 

3 odpowiedzi

0 głosów
odpowiedź 31 października 2016 przez Fenix Nałogowiec (26,750 p.)
wybrane 31 października 2016 przez Dominik Kapek
 
Najlepsza

Poniewaz DOM nie zdazyl sie zaladowac, i w momencie wywolywania skryptu nie istnieje div o id haslo. Przenies swoj skrypt na koniec body, lub uzyj

 document.addEventListener("DOMContentLoaded", function(event) { 
//Tutaj Twoj kod


 });

 

komentarz 31 października 2016 przez Dominik Kapek Nowicjusz (240 p.)
Dziękuje bardzo serdecznie za pomoc, w poradnikach p.Mirosława było inaczej - czyżby zmieniły się standardy?
komentarz 31 października 2016 przez ScriptyChris Mędrzec (190,190 p.)
To raczej Pan Mirosław w swoich tutorialach nie stosuje się do obecnych standardów :) Na forum jest wiele tematów z dyskusją o tym, jak m.in.:

http://forum.pasja-informatyki.pl/122259/co-jest-nie-tak-z-najnowszym-odcinkiem-kursu-miroslawa-zelenta?show=122259#q122259

Przejrzyj również review pierwszego odcinka kursu autorstwa Comandeera: http://www.webkrytyk.pl/krytyka/wideokursy/wideokursy-1-kurs-js-i-css-miroslawa-zelenta/
+2 głosów
odpowiedź 31 października 2016 przez Ivan Maniak (60,650 p.)

Skrypt wstawiony w head wykonuje się od razu, czyli strona jeszcze nie widzi żadnych elementów, w tym #haslo, a już chce się nim zajmować.
Jednym sposobem aby to naprawić jest wstawienie script pod koniec body (I ten polecam w 99% przypadkach)

<!DOCTYPE HTML>
<html lang="pl">
<head>
    <meta charset="utf-8" />
    <title>Szubienica</title>
 
    <link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
    <div id="haslo"></div>
    <script src="szubienica.js"></script>
</body>
</html>

Zawsze jest drugie wyjście, a mianowicie powiedzenie javascript, aby kod który ma się wykonać, żeby zrobił to dopiero po załadowaniu strony. Możesz to zrobić korzystając z event-ów w javascript. Przykładowy kod:

window.addEventListener('load', function(){
  var haslo = "Bez pracy nie ma pieniedzy";
  document.getElementById("haslo").innerHTML = haslo;
});

 

0 głosów
odpowiedź 31 października 2016 przez Arkadiusz Waluk Ekspert (290,310 p.)
Zapewne ten kod JavaScript masz w pliku "szubienica.js", który podpinasz w head. Czyli w momencie jego podpięcia i wykonania elementu o id "haslo" jeszcze na stronie nie ma (jest tworzony dopiero w body), stąd nic się nie dzieje.

Najprostsze rozwiązanie to przeniesienie kodu JavaScript przed samo zamknięcie body </body>, jeśli tylko to możliwe to dołączanie plików z kodem JS właśnie w tym miejscu jest zalecane.

Podobne pytania

0 głosów
2 odpowiedzi 843 wizyt
pytanie zadane 17 lutego 2017 w JavaScript przez Mahen Nowicjusz (150 p.)
0 głosów
3 odpowiedzi 2,243 wizyt
0 głosów
1 odpowiedź 613 wizyt
pytanie zadane 3 listopada 2017 w JavaScript przez maver100 Nowicjusz (120 p.)

93,482 zapytań

142,415 odpowiedzi

322,761 komentarzy

62,895 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...