Javascript 迭代节点列表,获取节点项的值的长度

Javascript 迭代节点列表,获取节点项的值的长度,javascript,node.js,arrays,ecmascript-6,nodes,Javascript,Node.js,Arrays,Ecmascript 6,Nodes,我正在尝试动态获取ZIPcodes,并在长度为5时验证它们 我使用querySelectorAll获取页面上的Zipcode字段,以及验证后将使用的一些其他字段 我迭代nodelist并将其传递给另一个函数,如果值的长度正确,eventlistener将在该函数中启动 function GetZipCodeDetails() { var zipId = document.querySelectorAll("[id*='ZipCode']");

我正在尝试动态获取ZIPcodes,并在长度为5时验证它们

我使用querySelectorAll获取页面上的Zipcode字段,以及验证后将使用的一些其他字段

我迭代nodelist并将其传递给另一个函数,如果值的长度正确,eventlistener将在该函数中启动

function GetZipCodeDetails() {

            var zipId = document.querySelectorAll("[id*='ZipCode']");
            var countyId = document.querySelectorAll("[id*='CountyId']");
            var stateId = document.querySelectorAll("[id*='StateId']");
            var phoneId = document.querySelectorAll("[id*='PhoneNumber']");

            for (var i = 0; i < zipId.length; i++) {
                if (zipId[i].length = 5)
                AssortedZipCodeFunctions(zipId[i], countyId[i], stateId[i], phoneId[i]);
            }
        }

        function AssortedZipCodeFunctions(zipId, countyId, stateId, phoneId) {
            //Runs auto-county/state function only when zipcode field is completed
            document.addEventListener("keyup", (e) => {
                if (zipId.value.length == 5) {
                    GetCountyAndStateFromIds(zipId, countyId, stateId, phoneId);
                } });
        }
函数GetZipCodeDetails(){ var zipId=document.querySelectorAll(“[id*='ZipCode']”); var countyId=document.queryselectoral(“[id*='countyId']”); var stateId=document.queryselectoral(“[id*='stateId']”); var phoneId=document.querySelectorAll(“[id*='PhoneNumber']”); 对于(变量i=0;i{ if(zipId.value.length==5){ GetCountyandStateFromId(zipId、countyId、stateId、phoneId); } }); } 上面列出的代码对我来说非常适合;我只是想把第二个函数移到第一个函数中,但我不知道怎么做。我只是想知道为什么我不能做到以下几点:

function GetZipCodeDetails() {

            var zipId = document.querySelectorAll("[id*='ZipCode']");
            var countyId = document.querySelectorAll("[id*='CountyId']");
            var stateId = document.querySelectorAll("[id*='StateId']");
            var phoneId = document.querySelectorAll("[id*='PhoneNumber']");

            for (var i = 0; i < zipId.length; i++) {
                document.addEventListener("keyup", (e) => {
                    if (zipId[i].value.length == 5) {
                        GetCountyAndStateFromIds(zipId[i], countyId[i], stateId[i], phoneId[i]);
                    }
                });
            }
        }
函数GetZipCodeDetails(){ var zipId=document.querySelectorAll(“[id*='ZipCode']”); var countyId=document.queryselectoral(“[id*='countyId']”); var stateId=document.queryselectoral(“[id*='stateId']”); var phoneId=document.querySelectorAll(“[id*='PhoneNumber']”); 对于(变量i=0;i{ if(zipId[i].value.length==5){ GetCountyandStateFromId(zipId[i]、countyId[i]、stateId[i]、phoneId[i]); } }); } } 上面给出:“TypeError:无法读取未定义的属性'value' 在HTMLDocument。”


我发现for循环正在调用第二个函数,而不是等到Zipcode值为5。。。所以我只是把它传递给了另一个函数?或者可能我被困在如何获取节点项的值的长度上了?请提供帮助。

在事件侦听器中,您将其添加到文档中,而不是单独添加每个元素

for (var i = 0; i < zipId.length; i++) {
                zipId[I].addEventListener("keyup", (e) => {
                    if (zipId[i].value.length == 5) {
                        GetCountyAndStateFromIds(zipId[i], countyId[i], stateId[i], phoneId[i]);
                    }
                });
            }
for(变量i=0;i{
if(zipId[i].value.length==5){
GetCountyandStateFromId(zipId[i]、countyId[i]、stateId[i]、phoneId[i]);
}
});
}

这被标记为node.js,但似乎没有关联。请显示您的HTML。为什么不使用
querySelectorAll(“您的id”)
querySelectorAll(“[id*='your-id']”)
似乎很不寻常。只需将
var
更改为
let
@buzatto这是正确的答案。非常感谢。