您当前的位置:首页 > 互联网教程

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

发布时间:2025-05-24 18:39:36    发布人:远客网络

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

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

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

二、HTMLCollection有length属性,但是js调用时length为0

这个问题,我前几天也遇到过,为了让更多的人不踩这个坑,我今天又特意来回答了,其实这个数组变量是长度为0的,但是为何console.log()这个数组又能看到这个数组呢,原因是,渲染之前打印的这个数组,看到的是渲染后的数据,通俗的讲,就是这个dom结构还没加载完,js就执行了,解决办法就等dom结构加载完成后再去获取这个数组,并提供vue等待渲染完执行的函数 vm.$nextTick(function({console.log(...)}))

三、为什么外部JS中的length用不了

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

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

3、varnavs=document.getElementsByClassName("block-item");

4、varnavMemu=document.getElementsByClassName("nav-children");

5、console.log(navs.length,navMemu.length);

6、}

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

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