Javascript &引用;未捕获类型错误:无法读取属性';名称';“未定义”的定义;当触发一个函数时
编辑:我发现代码工作正常,没有任何问题。模糊的是我自己。对不起,我不小心。 我有一个HTML文件,其中的表单包含一个ID为StuIDtxt的文本框 还有一些JavaScript,我的文件中有一段代码。提交表单时将触发函数getResult()Javascript &引用;未捕获类型错误:无法读取属性';名称';“未定义”的定义;当触发一个函数时,javascript,Javascript,编辑:我发现代码工作正常,没有任何问题。模糊的是我自己。对不起,我不小心。 我有一个HTML文件,其中的表单包含一个ID为StuIDtxt的文本框 还有一些JavaScript,我的文件中有一段代码。提交表单时将触发函数getResult() function getResult(){ var StuID = document.getElementById('StuIDtxt').value; document.getElementById('name').innerHTML = res
function getResult(){
var StuID = document.getElementById('StuIDtxt').value;
document.getElementById('name').innerHTML = result[StuID].Name;
return false;
}
还有一个变量名“result”,用于存储从JSON解析的数组
JavaScript控制台说,当我用“10001”填充文本框并提交表单时
Uncaught TypeError: Cannot read property 'Name' of undefined
但是打字
document.getElementById('name').innerHTML = result['10001'].Name;
在控制台中按预期成功执行
我在函数中做错了什么吗
Live web here:从
https://srakrn.com/satitnpru/announce/result_demo.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将始终存在于
结果中
,并直接引用名称
。如果StuID不存在,这将导致运行时错误。可能是因为“10001”不存在
这是结果的日志
我使用了'00020'及其OK作为测试,您可以执行console.log(StuID)代码>和控制台日志(结果)在getResult
函数中选择code>?机会是这两件事中的一件不是你想象的那样。