如果对象不存在,getElementsByName返回的是什么?

时间:2022-11-23 11:34:42
我想写一个函数,先判断对象是否存在,再作进一步的引用,代码如下
function setAppTitle()
{
if (document.getElementsByName("readonly"))
{  
    if (document.getElementsByName("readonly")[0].value == "true")
    {
        parent.document.title = "WebXT - "+ "[Read-Only]";
        }
        else
        {
            parent.document.title = "WebXT";
        }
    }
    else
    {
        parent.document.title = "WebXT";
    }
}
结果执行时if (document.getElementsByName("readonly"))根本没起作用,直接进入了其下的代码块执行,但如果改成if (document.getElementsByName("readonly")[0])就可以了。如果对象不存在,那么document.getElementsByName("readonly")这个数组应该是不存在的,又怎么能引用数组的元素呢?

6 个解决方案

#1


没有成员的元素组

#2


document.getElementsByName("readonly").length==0

#3


如果对象是同名的话,那就要按下标访问了。

#4


运行下面的语句,看看有什么异同:
<BODY>
<input type="button" value="getIt" onclick="alert(document.getElementsByName('hello'));">
<input type="button" value="getIt" onclick="alert(document.getElementsByName('hello')[0]);">
<input type="button" value="getIt" onclick="alert(document.getElementsByName('hello').length);">
</BODY>
</HTML>

#5


是不是尽管要找的对象不存在,getElementsByName方法仍然会返回一个什么都不包含的数组对象?

#6


应该是你的
document.getElementsByName("readonly").length==1
只有一个这样名叫readonly的控件

#1


没有成员的元素组

#2


document.getElementsByName("readonly").length==0

#3


如果对象是同名的话,那就要按下标访问了。

#4


运行下面的语句,看看有什么异同:
<BODY>
<input type="button" value="getIt" onclick="alert(document.getElementsByName('hello'));">
<input type="button" value="getIt" onclick="alert(document.getElementsByName('hello')[0]);">
<input type="button" value="getIt" onclick="alert(document.getElementsByName('hello').length);">
</BODY>
</HTML>

#5


是不是尽管要找的对象不存在,getElementsByName方法仍然会返回一个什么都不包含的数组对象?

#6


应该是你的
document.getElementsByName("readonly").length==1
只有一个这样名叫readonly的控件