JavaScript: Wie lässt man ein Element ausblenden und ein anderes einblenden?
Hallo zusammen!
Ich möchte gerne zwei HTML-Buttons mit JavaScript ausblenden sobald auf einer der beiden Buttons geklickt wird. Nachdem die Buttons verschwunden sind sollte ein anderes Element eingeblendet werden. Dieses Element ist schon ausgeblendet, da es dynamisch mit document.write erstellt wird und dass im Moment noch nicht passiert.
Hat jemand einen Pseudocode?
4 Antworten
"da es dynamisch mit document.write erstellt wird"
macht heute de facto keiner mehr, sondern fügt Elemente dynamisch durch Selektoren mit Methoden ähnlich wie innerHTML, appendTo in den DOM Tree ein. Ausblenden kannst Du ein Element mit der CSS Formatierung display:none;
Verwendest Du JQuery?
https://stackoverflow.com/questions/35174144/toggling-between-two-buttons-using-jquery
Dann ist das genau das richtige für dich.
Vielleicht haben hier Kollegen eine bessere Lösung.
Hatte selber bis vor 6 Monaten oft JQuery in Webanwendungen implementiert, nachdem ich aber dann eine Wette gegen einen Mitarbeiter verloren hatte, indem es darum ging ob man mit einer forEach auf document.querySelectorAll() schneller text einfügen konnte als mit einem klassischen $(".selector").text() Funktionsaufruf, habe ich aufgehört JQuery zu benutzen und teilweise sogar aus alten Webanwendungen entfernt.
Ich hatte dann selber noch ein paar tests gemacht und gemerkt das JQuery nur in sehr wenigen fällen lohnenswert ist.
Entweder man hat inzwischen sowieso ein komplettes Framework implementiert (React, Angular...) oder man bekommt es auch mit Vanilla hin.
So meine Erfahrung mit JQuery.
Du gibst den Buttons in deinem HTML eine Klasse, in der JavaScript Funktion werden dann alle Elemente mit der Klasse über das document geholt und du kannst dann das style Attribut der DOM Node entsprechend setzen:
element.style.display = "none"
danach kannst du dann deine von document.write erzeugte DOM Node entsprechend manipulieren, das sie angezeigt wird.
LG
Hallo,
ich habe was im Kopf und probiere das noch mal eben.
Aber im Endeffekt so etwas hier:
document.getElementById('buttonId').style.visibility = 'hidden';
Liebe Grüße
Leon
Oder du gibst dem Buttton eine Klasse und greifst im CSS auf diese zu:
$('#buttonId').attr('class', 'buttonNotVisibleClass');
Wichtig dabei ist, dass das ein jQuery-Code ist und kein "normales" JavaScript.
Du musst selbstverständlich sowohl die "buttonId", als auch die "buttonNotVisibleClass" so umbennen, wie die ID von deinem Button und falls du das über eine CSS-Datei machst, wie die Klasse heißen soll.
Es funktionieren beide Wege, beim 2. musst du natürlich noch den CSS-Teil zum Verstecken des Buttons schreiben.
Liebe Grüße
Leon
javascript zu wissen ist natürlich wichtig. Aber ich würde dir auch jquery empfehlen. Ist prinzipiell JavaScript aber viel komfortabler wie ich finde
Die Antwort habe ich ausgelassen weil die Frage beantwortet wurde.
Wieso sollte man für ein einzelnes Feature eine ganze Library einbinden? Zudem ist das auch sehr gut ohne JQuery machbar, und zudem inzwischen performanter.
Er hat nur eine Frage bezüglich dieses Problems gestellt. Wir wissen nicht wie umfangreich er JS verwendet, zudem kann es für andere Projekte in Zukunft hilfreich sein. War nur eine Empfehlung.
Die Antwort auf seine Frage hat er ja wie schon erwähnt erhalten daher bin ich nicht auf sein Problem eingegangen
Klar JQuery kann schon nützlich sein, aber gerade wenn man anfängt JavaScript zu lernen sollte man vielleicht erstmal den Vanilla teil lernen, damit man auch versteht was JQuery da im Hintergrund macht.
LG
Ja klar, da hast du auch völlig recht, in der Regel wird aber bei den Videos etc. Erklärt wann JQuery sinnvoll ist daher bin ich nicht ins Detail gegangen. Aber sind da wohl der selben Ansicht.
Guter Einwand zu document.write, der Fragesteller wollte aber meine ich beide buttons ausblenden und ein komplett neues Element anstelle dieser anzeigen.
Frage hätte man vielleicht ein bisschen besser formulieren sollen.
LG