Was ist hier falsch(JavaScript und HTML)?

 - (Computer, Programmieren, Website)

3 Antworten

Mal vom fehlerhaften HTML abgesehen, musst du das Attribut als String setzen.

setAttribute("hidden");

Besser löst man so was über eine Klasse und CSS toggled diese.

Ein weiterer Fehler ist, dass du das Script nicht in den HEAD schreiben solltest. An der Stelle gibt es dein HTML noch gar nicht im DOM. Schreib den Script-Block am besten direkt vor den schließenden </body> Tag. Alternativ kannst du auch einen DOM-Ready-Listerer machen aber das ist hier unnötig.

Hab ich beides schon versucht. Aber was meinst du mit fehlerhaftem HTML?

0
@Master643

Dann hast du halt noch weitere Fehler gemacht. Schau einfach in die Browserconsole, da werden dir Syntaxfehler angezeigt.

1
@Babelfish

Ich habe meine Antwort gerade noch ergänzt. Dein Script-Block sollte ganz ans Ende des HTML, also direkt vor den schließenden </body> Tag.

0

ach ja, fehler aufgefallen und nun abschreiben lol .

1
@TechPech1984

Ne, den habe ich schon alleine gesehen aber deine Antwort erst nach dem Absenden gelesen. 🙄

0

du kannst nich auf den DOM zugreifen der noch gar nicht da ist .

ergo kannst du oben nicht einfach ohne load funktion versuchen auf ein dom element zuzugreifen wenn doch erst viel später im body das Element erzeugt wird .

wenn müsstest du das

<script> ... </script>

weiter unten am ende in den body packen .

oder es in eine funktion packen und im

<body onload="deinestartfunktion()"> 

aufrufen.

genau das sollte dir auch die fehlermeldung in der developer console sagen .

oder anders gesagt

document.getElementById geht erst wenn der body schon fertig gebaut wurde , das javascript wird aber schon viel früher ausgeführt .

also bei deinen ersten zwei document.getElementById ... machst du

function deinestartfunktion() {
    document.getElementById....
    document.getElementById....
}

und setzt dann bei onload im body tag diese funktion , wie oben beschrieben . dann wird erst der body gebaut und dann gibts auch die elemente .

Okay, jetzt funktioniert es, das mit dem Load hatte ich zwar schon versucht, aber vergessen die Attributnamen in Hochkommata zu setzen.

2
@Master643

da haben dir ja die anderen geholfen . wichtig wäre aber ds du mal die konsole einschaltest , die sagt dir die fehler . jeder browser hat eine developer console zum debuggen von fehlern .

1
@TechPech1984

Ja, danke, habe ich jetzt auch gemacht und die wird mir hoffentlich auch in Zukunft bei derartigen Problemen helfen können.

1

Nimm einfach statt .setAttribute("hidden") lieber .style.display ="none" um es auszublenden bzw. .style.display ="block" um es anzuzeigen

Hab ich auch schon versucht.

0
@Master643

Bin mir nicht sicher ob hinter die beiden Eventlistener noch () diese Klammern müssen. Also showText()

0
@Maddoc66

Müssen sie nicht, aber das Problem wurde gelöst

0

Was möchtest Du wissen?