• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

"Nicht mehr anzeigen"-Button realisieren

buzi

Neues Mitglied
Hallo,
ich habe folgende Frage: Wie kann man mit einem Klick auf einen Button oder Link den Wert einer Variablen ändern, sodass alle Dateien der Website den geänderten Wert verwenden?

Auf diese Frage reduziert sich mein folgendes Vorhaben:
In der Website, die ich entwickle, verwende ich einen Frameset mit den Frames home, info und abk. In der in home geladenen Datei kann der Besucher wählen, welche von 10 gleichartigen Dateien er im Frame info öffnen möchte. Jede der zehn Dateien öffnet beim Laden dieselbe Hilfe-Datei listenauswahl.html im Frame abk, in dem im weiteren Bedienverlauf auch andere Inhalte erscheinen. Da der Besucher häufig zwischen den zehn Dateien wechselt, muss die Hilfe-Datei einen Button oder Link Nicht mehr anzeigen o.Ä. erhalten, damit die Hilfe-Datei nach dessen Betätigung nicht mehr angezeigt wird und nervt.

Die hierfür relevanten Teile der Datei scripte.js lauten
Code:
var lh_aus = false;
function lhilfeein (){
   if(lh_aus == false)
   open("listenauswahl.html", "abk");
}
function nichtanzeigen (){
   lh_aus = true; 
}
Jede der zehn Dateien enhält die Anweisung lhilfeein();
Die Hilfedatei listenauswahl.html enthält
Code:
<script type="text/javascript">
document.getElementById("b1").onclick=nichtanzeigen;
</script>
<p><button id="b1">Nicht mehr anzeigen</button></p>
Alle betroffenen Dateien enthalten im head
<script type="text/javascript" src="scripte.js"></script>

Alles funktioniert mit folgender Ausnahme: Durch Klick auf den Button b1 wird der Wert der Variablen nicht auf true gestellt, nicht innerhalb von listenauswahl.html, geschweige denn in scripte.js, wie erhofft und bei dieser Lösung auch erforderlich. Oder ist der Lösungsweg über die Variablenänderung eine Schnappsidee und es geht ganz anders?

Ich bin Anfänger und lerne autodidaktisch JavaScript. Wenn mir jemand helfen will, bitte ich dies zu berücksichtigen.
Vielen Dank im Voraus.
 
Werbung:
Du machst in deinem Markup die Javascriptabfrage nach dem Button, bevor du den Button einfügst. Daher findet document.getElementById("b1") nichts.
Oder ist der Lösungsweg über die Variablenänderung eine Schnappsidee und es geht ganz anders?
Mit der Variable ist alles ok. Aber die Webseite vergisst alles wieder, sobald die Seite neu geladen wird. Du solltest also besser statt einer Variable einen Cookiewert setzen oder den modernen local Storage nutzen.
 
Hallo pax, besten Dank für deine Hilfe.

Ich habe jetzt den script-Container hinter der Zeile mit dem button b1 stehen. Wenn ich jetzt auf den Button klicke erscheint aber (mit Google Chrome) eine Mitteilungsbox mit dem Inhalt "JavaScript-Warnmeldung" , "nicht anzeigen" mit einem OK-Button (mit Internet Explorer und Firefox, den ich normalerweise nutze sieht das etwas anders aus, ist aber das inhaltlich das Gleiche). Um der Sache auf die Spur zu kommen, habe den Script-Container erweitert auf
Code:
document.write(lh_aus);
document.getElementById("b1").onclick=nichtanzeigen;
//nichtanzeigen();
document.write(lh_aus);
und ich sehe, dass das Anklicken (außer der unerwünschten Meldung) nichts bewirkt, auch nicht wenn ich den OK-Button der Meldung anklicke.
Dann habe ich die Zeile mit dem Eventhandler maskiert und die Anweisung nichtanzeigen demaskiert. Dann erscheint (sofort beim Laden der Datei) die Meldungsbox, aber beim Klicken auf den OK-Button wird die Variable auf true gesetzt.

Frage 1: Warum erscheint die Box und wie kann ich das verhindern?

Frage 2: Warum setzt der Eventhander die Variable nicht auf true obwohl die referenzierte Funktion doch diesbezüglich funktioniert?

Ich vermute, mit
Aber die Webseite vergisst alles wieder, sobald die Seite neu geladen wird.
meinst du in meinem Fall den frame abk mit der Datei listenauswahl.html, denn das würde zu der Tatsache passen, dass mit der Funktion nichtanzeigen die Variable in der Datei scripte.js nicht geändert wurde.
Du solltest also besser statt einer Variable einen Cookiewert setzen oder den modernen local Storage nutzen.
Frage 3: Ist local Storage etwas, das wie Cookies von Browsern häufiger unterdrückt wird.

Hintergrund dieser Frage: Meine Website ist für Leute in meinem Alter (bin 72), und die meisten von denen, die sich überhaupt an den Rechner wagen sind ängstlich und blockieren lieber Cookies (wenn sie es denn können). Selbst Scripte werden von denen verhältnismäßig oft blockiert. Das weiß ich aus Meldungen, die ich von Besuchern meiner im Netz befindlichen Website bekomme, in der wenige Scripts enthalten sind. Wenn du die Frage 3 mit nein beantwortest, werde ich mich mit local Storage beschäftigen, sobald ich dazu wissensmäßig in der Lage bin. Kennst du dazu eine Informationsquelle, die für Anfänger geeignet ist?
mfg
 
Werbung:
Hallo buzi,

ich stecke gerade im Weihnachtsurlaub und habe wenig Zeit. Deshalb nur eine kurze Antwort zum zweiten Teil deines Beitrages.
Meine Website ist für Leute in meinem Alter (bin 72), und die meisten von denen, die sich überhaupt an den Rechner wagen sind ängstlich und blockieren lieber Cookies (wenn sie es denn können). Selbst Scripte werden von denen verhältnismäßig oft blockiert. Das weiß ich aus Meldungen, die ich von Besuchern meiner im Netz befindlichen Website bekomme, in der wenige Scripts enthalten sind. Wenn du die Frage 3 mit nein beantwortest, werde ich mich mit local Storage beschäftigen, sobald ich dazu wissensmäßig in der Lage bin. Kennst du dazu eine Informationsquelle, die für Anfänger geeignet ist?

Der Local Storage wird von den meisten Browsern noch genauso behandelt wie Cookies, was die Usereinstellungen betrifft. Wenn der User also Cookies deaktiviert, das gilt dies auch für den local storage. Das muss dich aber nicht daran hindern, trotzdem den Wert zu speichern. Bei Usern mit deaktivierten Cookies wird dann einfach nichts gespeichert, alle anderen haben ein kleines Komfortplus. Ein ganz übersichtliches Tutorial zum lesen und setzen von Cookies findest du hier: http://www.kostenlose-javascripts.de/tutorials/cookies/

Zu deinem Scriptproblem:
Schick mir mal per PM eine vollständige Beschreibung, was genau du tun möchtest und wie der aktuelle Stand ist. Sobald ich Zeit finde schicke ich dir dann die Lösung.
 
Danke pax
Ich werde mich denn wohl mit Cookies beschäftigen.
Zur Zeit bin ich aber im Weihnachtsstress und werde mich erst nach Weihnachten wieder mit dem Thema beschäftigen. Daher sende ich auch erst dann eine ausführliche Bescheibung.
Ein Frohes Fest wünscht buzi.
 
Hallo pax
Ich wollte mich an die vollständige Beschreibung setzen und sehe jetzt, dass ich sie dir per PM schicken soll. Was ist PM und wie geht das? Bisher bin ich nur in der Lage, einen Beitrag ins Forum stellen (bin bekanntlich neu hier). Wodurch unterscheidet sich eine PM davon? Wenn M für Mail steht bräuchte ich die Email-Adresse.
 
Werbung:
PM steht für Private Nachricht, bei der Forensoftware hier heißt es "Unterhaltung". Klick dazu auf sein Profil und sprich ihn darüber an.

Falls Du weitergehende Unterstützung suchst solltest Du dein Anliegen evtl. auch in der Jobbörse hier im Forum posten.
 
  • Like
Reaktionen: pax
Zurück
Oben