首页编程JSLENGTH(js中length用法)

JSLENGTH(js中length用法)

编程之家2024-02-05110次浏览

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

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

JSLENGTH(js中length用法)

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

window.onload=function(){

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

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

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

console.log(navs,navMemu);

JSLENGTH(js中length用法)

}

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

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

单个对象是没有length属性的,obj.length--- undefined

如果返回的是一个数组,会有length属性的,例如:var divObjs= document.getElementsByTagName("div");这个是会返回一个div的数组的。

你说的“可是如果不是数组,objxxx.length依然存在啊,并且返回字符串的个数。”,我想你这个objxxx就不是对象,或者只是个字符串了。你可以alert(objxxx);看是不是会是Object。

己以愚见,还请谅解!

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

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

JSLENGTH(js中length用法)
elementary os(什么是Elementary OS)deb安装(Linux 安装 deb 包的详细教程)