【发布时间】:2019-02-19 05:08:37
【问题描述】:
我正在尝试编写一个 Javascript 函数,它返回给定名称的单个元素。我找到了this 问题并修改了答案以使用三元运算符。
function getField(fieldName)
{
var elements = document.getElementsByName(fieldName);
return elements.length && elements.legth > 0 ? elements[0] : null;
}
我的问题是关于document.getElementsByName(fieldName) 找不到任何匹配项的情况。它返回undefined 还是0?当我将elements.length 作为警报消息输出时,警报中的值为0,但控制台Chrome 的DevTools 显示undefined。当我从控制台调用console.log(elements.length) 时,它会输出0 和 undefined。
我知道我的函数可以处理这两种情况,但是我在这里缺少什么? Javascript 实际上在做什么?
提前感谢您帮助我理解这一点。
编辑:很抱歉发布图片而不是实际代码,并感谢语法说明。
【问题讨论】:
-
请include code as text, not as images。你可能想要
elements && elements.length > 0... -
alert(something)返回未定义,console.log()也是如此。 -
第一个
undefined是alert返回的结果。console.log也返回undefined,但首先打印elements.length的值。见Chrome/Firefox console.log always appends a line saying undefined -
return elements[0] || null;会更简单/更快。你甚至可以省略null,因为无论如何undefined是更好(更通用)的null。 -
elements.length怎么不返回 undefined 或者抛出异常?如果没有找到匹配项,getElementsByName()是否返回空对象?
标签: javascript undefined getelementsbyname