“未捕获的TypeError:触发函数时无法读取未定义的属性'名称'

时间:2016-01-05 14:36:17

标签: javascript

编辑:我发现代码工作正常,没有错。这是我自己的模糊。抱歉没有小心。

我有一个HTML文件,其中的表单包含ID为#StuIDtxt的文本框。

还有一些JavaScript,这里是我文件中的代码。提交表单时会触发函数getResult()。

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

还有一个变量名'result'存储从JSON解析的数组。

当我用'10001'填充文本框并提交表单时,JavaScript控制台说

Uncaught TypeError: Cannot read property 'Name' of undefined

然而输入

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

在控制台中按预期成功执行。

我在功能上做错了吗?

在此网站直播:https://srakrn.com/satitnpru/announce

2 个答案:

答案 0 :(得分:0)

https://srakrn.com/satitnpru/announce/result_demo.json检索到的JSON不包含10001的任何ID。如果我尝试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不存在,则会导致运行时错误。

答案 1 :(得分:0)

也许是因为' 10001'不存在

这是来自result var

的日志

http://prntscr.com/9mdsjv

我使用了' 00020'好的