PennController for IBEX › Forums › Support › Cannot reset value of newVar › Reply To: Cannot reset value of newVar
April 20, 2021 at 1:57 pm
#6877
Keymaster
Hi,
I am not sure where you saw such a use of getVar(...).value, but it’s a method you use to inject native JavaScript in your code. In your case, you’re accessing the value of the Var element before the trial has even started. This guide should bring insights into this issue.
The proper PennController way of accomplishing what you’re trying to do is:
newTrial(
// Initialize variable
newVar("audFile","None").set( "variable is changed" ),
newText( "This now says 'variable is changed':" )
.after( newText().text(getVar("audFile")) )
.print()
,
newTimer(3000).start().wait(),
clear()
,
// Print letter to be typed
newText("letter", "Now please press A")
.css("font-size", "24pt")
.log()
.print()
,
// Get keypress
newKey("keypress", "as")
.log()
.wait()
.test.pressed( "A" )
.success(
getVar("audFile").set("correct"),
newText( "Correct!" ).print(),
newTimer(1000).start().wait()
)
.failure(
getVar("audFile").set("wrong"),
newText( "Wrong!" ).print(),
newTimer(1000).start().wait()
)
,
// Print the final value of the variable
newText( "This should say either 'Correct!' or 'Wrong!' and it does:")
.after( newText().text(getVar("audFile")) )
.print()
,
newTimer(1000).start().wait()
)
If your Var element is trial-wise, which I take to mean local (ie. non-global) then you don’t need to use the global command
Jeremy