Skripting Kontrollkästchen Wahrheitswert zuweisen

Geo13 shared this question 8 years ago
Answered

Hallo,


ich habe zwei Kontrollkästchen um Objekte ein- bzw. auszublenden erstellt.

Ich möchte nun folgendes: Wenn ich beim erste Kontrollkästchen (mit dem Wahrheitswert w) einen Haken setze soll der Haken beim zweiten Kontrollkästchen (mit dem Wahrheitswert n1) verschwinden ohne dass ich das manuel machen muss.


Also wennn w = true soll n1 = false werden.


ich bin zu den Eigenschaften des ersten Kontrollkästchens gegangen und habe in dem Reiter "Skripting" "Globales JavaScript" ausgewählt und folgendes eingetippt:


function ggbOnInit() {}

if (w = true)

SetzeWert[n_1,false]


klappt leider nicht. Beschäftige mich erst seit kurzem mit GeoGebra, hoffe dass ihr mir weiterhelfen könnt. Danke schonmal.


Geo13

Comments (3)

photo
1

Hallo

und willkommen im Forum.


Ich gehe davon aus, dass für w und n1 all Zustände erlaubt sind mit der Ausnahme, dass beide auf 'On' (true) sind.

(also beide auf 'Off' (false) ist erlaubt und nur einer der Beiden auf 'On' (false) ist ebenfalls erlaubt).


Setze folgende Scripts


In w 'Bei Update' und Auswahl 'GeoGebra-Script' (also nicht Java):

SetzeWert[n1,Wenn[w, false, n1]]


Der folgende Script kann dann weggelassen werden wenn 'w' unabhängig von 'n1' gesetzt oder nicht gesetzt sein kann.

In n1 'Bei Update' und Auswahl 'GeoGebra-Script':

SetzeWert[w,Wenn[ n1,false, w]]


Das liest sich (für n1) wie folgt:

Sobald sich der Wert von 'n1' verändert (Bei Update) führe die folgenden Zeilen aus:

SetzeWert[w -> Verändere den Wert 'w' wie im folgenden Paramer definiert.

, Wenn[ n1 -> wenn n1 auf 'On' gesetzt ist

, false, w] -> falls die Bedingung zutrifft: 'false', falls Bedingung nicht (sog. Else-Fall) zutrifft: der unveränderte Wahrheitswert von w'. Damit ist der 'Wenn' Befehl abgeschlossen und die schliessende Klammer wird gesetzt.

Würde man den 'Else-Fall' (sonst....) weggelassen, dann würde GGB per Default 'Undefiniert' ('?') einsetzen. Damit würde 'w' am Bildschirm nicht mehr angezeigt.

] -> auch der Befehl 'SetzeWert' ist abgeschlossen und die schliessende Klammer wird gesetzt.


In SetzeWert[was,womit] wird also für den 2. Parameter (womit), abhängig von einer Bedingung, entweder der eine "womit-Wert" oder aber der andere "Womit-Wert" verwendet (aber niemals 'nichts')


Das Ganze auch als Anhang.


Etwas gewöhnungsbedürftig ist der Umstand, dass man mit jedem Script-Befehl immer "etwas" verändert. Es gibt noch 2 Syntax-Regeln resp. Befehle womit man das verhindern kann, auf diese könnte ich allenfalls später eingehen. Wichtig ist, dass Du Dich als erstes bewusst an diese Hauptregel gewöhnst (man stolpert immer wieder darüber).


Uebrigens der Reiter "globales Java-Scrip" ist für ganz bestimmte GGB-spezifische Java-Befehle reserviert und "versteht" die GGB-Befehle(zB. SetzeWert[], Wenn[] usw) nicht.


Raymond

https://ggbm.at/560117

photo
1

Ich habe mich in den Weihnachtsferien mit Javascript beschäftig. Das ist ganz nützlich in Informatik um ein wenig JavaScript mit schnellem Erfolg anzuwenden. Geogebra ist für Schüler ein tolle Möglichkeit zur Visualisierung vieler mathematischer Problemstellungen.

In diesem Zusammenhang ist mir auch das Problem der Radiobuttons in die Hände gefallen. Da ergab sich auch die angehängte Lösung über JavaScript. Außerdem habe ich mir für die Schüler schon einen Lerntext zurechtgelegt, der sich mit dem Thema JavaScript befasst.

Die Beispiele darin sind ausprobiert, allerdings habe ich diese Unterrichtseinheit noch nicht gehalten, so dass sicher noch Überarbeitungen notwendig sind.

Auch dieser Text zur Einführung ist mit angehängt.


Beispiel für das Erzeugen von echten Radiobuttons:

Es sind die Kontrollkästchen j und i in der GGB-Datei erzeugt. Eine Entweder/Oder-Auswahl kann man praktizieren, indem man jeweils folgende JavaSrcipte einfügt:


Bei Update (in i)


if(ggbApplet.getValue("i")==false){ggbApplet.evalCommand("j=false");

ggbApplet.evalCommand("i=true")}

else

{ggbApplet.evalCommand("j=false")

ggbApplet.evalCommand("i=true")}


Bei Update (in j)


if(ggbApplet.getValue("j")==false){ggbApplet.evalCommand("i=false");

ggbApplet.evalCommand("j=true")}

else

{ggbApplet.evalCommand("i=false")

ggbApplet.evalCommand("j=true")}


Besser ist es sicher in die angehängte ggbDatei zu sehen.

https://ggbm.at/560139a0a0d6de3159f30bd9b7d14ece30ee61

photo
2

Danke, ihr habt mir geholfen.

© 2021 International GeoGebra Institute