问题已经解决,属于个例问题;不具有普遍参考性
代码如下:
(function(){
var loginForm = document.forms.loginForm;
var login_inputs = loginForm.getElementsByTagName('input');
...
login_inputs .forEach(function(item,index,array){});
})()
代码中报错:
login_inputs is not defined
login_inputs .forEach is not a function
loginForm测试正常
开发工具sublime
Document
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
以上代码再执行前
如果
loginForm未定义过,报ReferenceError: Can't find variable: loginForm如果
loginForm定义过并且是一个DOM元素,那么login_inputs为一个NodeList对象,这个对象没有forEach方法的,所以会报forEach is not a function想要使用Array的forEach方法,使用函数的call/apply方法
一般来说,xxx is not defined会出现在变量未声明之前就使用的场景。
但是,重点来了,单看题主的这段代码却永远不可能出现login_inputs is not defined,因为最开始的地方已经用了var进行声明……
所以,应该是其他地方错了吧
你在chrome按F12调试一下看看,在声明login_inputs这后面先console一下看看这个得到的是什么东西,然后console.log(typeof X)看看它的类型是不是数组,你下面用到了遍历数组,然后你在你js中打断点调试下看看,你发了两句代码,具体哪里问题,我也说不准,不过首先,我一般声明数组的话,会var a = new array(); 这样写,看看是不是这个的问题
你这里要用闭包,就访问不到loginForm了。
应该这样写:
已经解决问题,当匿名函数执行完;变量应该就被销毁了。
谢谢大家帮我解决问题。
输出一下loginForm?