| Reference | Downloads | Github

TypeError: Cannot read property '0' of undefined


Image below is the flow of my design. I guess the error is in the “red circle” in the image.

And the code of this part is:

**Begin Experiment:**
Bigpool2image=' '

**Begin Routine:**
if BigpoolAns.keys[0]=='1':
if BigpoolAns.keys[0]=='2':
if BigpoolAns.keys[0]=='3':
if BigpoolAns.keys[0]=='4':
if BigpoolAns.keys[0]=='5':
if BigpoolAns.keys[0]=='6':

Can someone tell me where is the problem?
Thanks a lot!

Hi @Weimin_Chan, I think the error is the way you have defined your variables in your code component. e.g.,

var odd = [1,2];
var smallpass=2
var bigpass=2
var group = odd[Math.floor(Math.random() *odd.length)];
  if (group==1){

Whilst this is the correct way to define variables in JS( i.e., using the var prefix) you do not need to define your variables in your code component because Builder will do this for you in such a way that will give your variables global scope in your task. By redefining your variables using var, you are limiting their scope to the function that PsychoPy puts them in (see your JS scripts). I think the error is because your variable bigpass needs global scope to be used to define nReps in your trialhandler.

Hi @dvbridges,
So maybe I should put var bigpass=2 out of the function experimentInit()?

You could, but it would be easier if you just delete the var prefix from your variables in your code component and let PsychoPy do it for you.

Thanks for your kindly reply.
I just wonder if I let PsychoPy declare the variable for me, how can I initialize the variable to certain value?
I have started to learn JS…

Its ok, if you assign a value to a variable in a code component e.g. bigpass=2;, PsychoPy will declare that variable for you, and give it global scope e.g. var bigpass;.

OMG, it works! Thank you!!!
It torments me for days.

But there’s another error occurs.
It’s seems like this is an error about image path?