js中“对象”和“字符”串都有length属性吗?

JavaScript016

js中“对象”和“字符”串都有length属性吗?,第1张

单个对象是没有length属性的,obj.length --- undefined如果返回的是一个数组,会有length属性的,例如:var divObjs = document.getElementsByTagName("div")这个是会返回一个div的数组的。你说的“可是如果不是数组,objxxx.length依然存在啊,并且返回字符串的个数。”,我想你这个objxxx就不是对象,或者只是个字符串了。你可以alert(objxxx)看是不是会是Object。己以愚见,还请谅解!

.length:

js 的原生方法,用于获取元素的个数和对象的长度

var length = $(obj).length

.size():

size()属于 jQuery 方法,只能作用于对象上,获取元素的个数

var size = $(obj).size()

注:

1、使用 length 属性之前,请对对象做判空校验

2、如果想要获取字符串的长度只能用 length 属性,如

var length = $(obj).html().length

这要看你的js代码的执行时机。如果外部js的引用语句是放在<head></head>内的,那么当它运行时,<body></body>内的代码尚未加载到内存,就无法获取到dom元素,length属性值自然就是0了。而直接放在html内的js代码是放在所有标签后面的,它运行时页面的整个dom结构已经加载完毕,这样再获取dom元素就没问题了。

你可以把外部js的代码放到window对象的onload事件中,就ok了:

window.onload=function(){

    var navs = document.getElementsByClassName("block-item")

    var navMemu = document.getElementsByClassName("nav-children")

    console.log(navs.length,navMemu.length)

    console.log(navs,navMemu)

}

这意思就是说,当window对象(及其下属所有子对象)都完全加载(load)到内存后,才开始执行指定的代码,这样就能保证程序正确运行了。