2014-11-07 4 views
0

выбор - это вложенный массив в объекте json. Я помещаю эти данные для последовательности викторины с несколькими вариантами выбора. Когда я нажимаю триггер для функции, консоль говорит «Uncaught TypeError: Невозможно прочитать свойства« выборы »неопределенного« У меня также есть переменная «c», которая изменяется, когда пользователь выбирает другой экзамен, поэтому экзамен экзамен = экзамен + c будет работать с функцией размещения.Ошибка с json Uncaught TypeError: невозможно прочитать свойство «выборы» undefined

var exam0 = [ 
    { 
     "question": "which is a negative number?", 
     "choices": [ 
         "2", 
         "-2",`` 
         "6", 
         "8", 
     ], 
     "correctAnswer": "B", 
     "hint": "The one with the ' - ' negative sign" 
    }, 
    ......other questions**** 
  
]; 

Функция

function placement(x) /*x is variable used to change the question from the json object*/ 
{ 
    choiceOne=$('<p>').text('A.'+exam[x].choices[0]); /*where the console points to problem*/ 
    choiceTwo=$('<p>').text('B.'+exam[x].choices[1]); 
    choiceThree=$('<p>').text('C.'+exam[x].choices[2]); 
    choiceFour=$('<p>').text('D.'+exam[x].choices[3]); 
    currentQuestion=$('<p>').text(exam[x].question); 
    $("#honeyPot").empty().append(currentQuestion); 
    $("#honeyPot p").prepend(count+"."); 
    $('#options').find('p').remove().hide(); 
    $('#optionOne').fadeIn(250).append(choiceOne); 
    $('#optionTwo').fadeIn(250).append(choiceTwo);  
    $('#optionThree').fadeIn(250).append(choiceThree); 
    $('#optionFour').fadeIn(250).append(choiceFour);  
} 
+0

Вы определяете 'exam0', но функция' placement' ссылается на «экзамен». Это не похоже на то, что «экзамен» определен где угодно. – sherb

ответ

0

Я думаю, вы должны использовать exam0 в функции тоже вместо экзамена, так как exam0 является объектом JSON.

function placement(x) /*x is variable used to change the question from the json object*/ 
{ 
    choiceOne=$('<p>').text('A.'+exam0[x].choices[0]); /*where the console points to problem*/ 
    choiceTwo=$('<p>').text('B.'+exam0[x].choices[1]); 
    choiceThree=$('<p>').text('C.'+exam0[x].choices[2]); 
    choiceFour=$('<p>').text('D.'+exam0[x].choices[3]); 
    currentQuestion=$('<p>').text(exam0[x].question); 
    $("#honeyPot").empty().append(currentQuestion); 
    $("#honeyPot p").prepend(count+"."); 
    $('#options').find('p').remove().hide(); 
    $('#optionOne').fadeIn(250).append(choiceOne); 
    $('#optionTwo').fadeIn(250).append(choiceTwo);  
    $('#optionThree').fadeIn(250).append(choiceThree); 
    $('#optionFour').fadeIn(250).append(choiceFour);  
} 
+0

У меня также есть переменная 'c', которая изменяется, когда пользователь выбирает другой экзамен, поэтому экзамен экзамена = экзамен + c будет работать с функцией размещения. – user3697958

Смежные вопросы