2016-01-05 6 views
0

EDIT: Я обнаружил, что код работает нормально, и ничего не получается. Это я был размыт. Извините за то, что вы не осторожны.«Uncaught TypeError: Невозможно прочитать свойство« Имя »неопределенного» при срабатывании функции

У меня есть файл HTML с формой, содержащей текстовое поле с идентификатором #StuIDtxt.

Также есть несколько JavaScript, и вот код в моем файле. Функция getResult() будет запущена при отправке формы.

function getResult(){ 
    var StuID = document.getElementById('StuIDtxt').value; 
    document.getElementById('name').innerHTML = result[StuID].Name; 
    return false; 
} 

Существует также переменная name 'result', хранящая массив, обработанный JSON.

Когда я заполнить текстовое поле с «10001» и отправить форму, JavaScript консоль сказал

Uncaught TypeError: Cannot read property 'Name' of undefined 

Однако набрав

document.getElementById('name').innerHTML = result['10001'].Name; 

в консольном результате в успешном выполнении, как и ожидалось.

Я сделал что-то неправильно в функции?

Живая веб здесь: https://srakrn.com/satitnpru/announce

+0

Так как тест , вы можете выполнить 'console.log (StuID);' и 'console.log (result);' в вашей функции 'getResult'? Скорее всего, одна из двух вещей - это не то, что вы думаете. –

ответ

0

JSON извлекается из https://srakrn.com/satitnpru/announce/result_demo.json не содержит идентификатор 10001. Если я попробую 00001, ошибка не возникает. Изменение, как это:

function getResult(){ 
    var StuID = document.getElementById('StuIDtxt').value; 
    if (StuID != null && StuID.trim() != "") 
    { 
     if (typeof result[StuID] != "undefined") 
      document.getElementById('name').innerHTML = result[StuID].Name; 
     else 
      alert("Unknonw ID: " + StuID); 
    } 
    return false; 
} 

В вашем коде, вы предполагаете, что данный ID всегда будет существовать в result и непосредственно ссылаться Name. В случае, если StuID не существует, это приведет к ошибке выполнения.

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