Wie ändere ich einen Paragraph indem ich einen Button benutze mithilfe von HTML und Javascript?

2 Antworten

Mit diesem Code kannst du das umsetzen, was du beschrieben hast:

<!DOCTYPE html>
<html>
    <head>
        <title>Wechselnde Inhalte</title>
		
        <script>
	        inhalte = [
	        	"Saab",
	        	"Volvo",
	        	"BMW"
	        ];
	        
	        aktuellerInhalt = 0;
	        
	        function inhaltWechseln() {
		        
		        if(aktuellerInhalt <= inhalte.length-2) {
			        aktuellerInhalt++;
		        } else {
			        aktuellerInhalt = 0;
		        }
		        
		        document.getElementById("wechselnderInhalt").innerHTML = inhalte[aktuellerInhalt];
		        
	        }
        </script>
    </head>
    <body>
	    <h1>Wechselnde Inhalte</h1>
	    <p>Inhalt: <span id="wechselnderInhalt">Saab</span></p>
	    <p>
		    <a href="javascript:inhaltWechseln();">jetzt wechseln</a>
	    </p>
    </body>
</html>

Da du sagst, du bist Anfänger, erkläre ich die Ansätze. Es gibt ja immer verschiedene Wege, um ein Ziel zu erreichen. Der Ansatz von PWolff ist natürlich auch eine Möglichkeit. Ich persönlich würde es so oder so ähnlich machen:

  • Innerhalb von <script> gibt es den Array "inhalte". Falls du noch nicht wusstest, wie ein Array funktioniert, weißt du es jetzt. Dieser enthält die Inhalte und kannst du beliebig nach dem vorhandenen Schema erweitern.
  • JavaScript muss wissen, welcher der Einträge grade angezeigt wird. Das wird in der Variable "aktuellerInhalt" gespeichert. Der erste Eintrag im Array ist immer null, nicht eins. Darum ist der Wert auf null und weiter unten im html-Code steht auch schon der erste Eintrag als sogenannter hardcode.
  • In der Funktion inhaltWechseln() wird definiert, welcher Array-Eintrag (index) als nächstes kommt. "inhalte.length" gibt die Länge des Arrays zurück. Da die Zählung aber bei null beginnt muss noch -2 hinten dran. Mit etwas basteln kannst du nachvollziehen, was ich damit meine. Oder du weißt es schon.
  • Mit der Zeile "document.getElementById..." wird im html-Code nach einem Tag mit der ID "wechselnderInhalt" gesucht und dort wird der jeweils nächste Eintrag aus dem Array eingetragen.
  • Im html-Code ist dann nur noch ein Tag mit der ID "wechselnderInhalt". Du wolltest das im Paragraphen machen. Das geht natürlich sinngemäß auch. Über den Link wird die JavaScript-Funktion ausgeführt (falls du noch nicht wusstest, wie man das auch ohne "onClick" machen kann).

Am einfachsten wäre es vermutlich, für jeden Text einen eigenen Absatz zu nehmen und alle bis auf den ersten auszublenden (display:none). Die IDs davon z. B. "text1", "text2", ...

<p id="text12" style="display:none;">Hier steht der zwölfte Text</p>

und ein verstecktes Feld (etwa <input type="hidden" id="textIndex" value="1" />).

Beim Handler für das Click-Ereignis des Buttons:

  • Wert von document.getElementById("textIndex") auslesen
  • mit Number.parseInteger() in eine Zahl "index" umwandeln
  • Element mit id ("text" + index) verstecken (element.style.display="none";)
  • index erhöhen
  • Wert von index in Element mit id "textIndex" schreiben
  • Element mit id ("text" + index) sichtbar machen (element.style.display="initial"; o. Ä.)

Man kann natürlich auch alle Elemente durchgehen und nachsehen, welches sichtbar ist, und dann dieses ausblenden und das nächste einblenden.

Oder man setzt die Texte in ein Array und wählt bei jedem Klick den nächsten Array-Index (in einer Produktivumgebung würde man die Texte dann aus einer Datei einlesen, dann kann man sie am einfachsten ändern).


Yannik596 
Fragesteller
 14.05.2023, 22:43

Ihre Tipps sind sehr hilfreich. Das Problem ist jedoch, dass ich grade anfange HTML und JS zu lernen und das leider noch nicht mit Arrays etc umsetzen kann. Hatte dazu Quellcodes im Internet durchsucht, aber leider nichts gefunden. Aber danke für die Hilfreichen Tipps.

0
PWolff  14.05.2023, 22:45
@Yannik596

Für den Anfang wäre es vermutlich besser, erst einmal mit 2 Texten anzufangen, die abwechselnd angezeigt werden.

1