在没有重新分配的情况下,函数内的变量值随时间变化

Value of variable changing over time inside function w/o reassignment

本文关键字:函数 情况下 变量值 变化 时间 新分配 分配      更新时间:2023-09-26
<script>
    document
            .getElementById('country')
            .addEventListener('change', function() {
                'use strict';
                var value1 = this.value;
                console.log(value1);
                var vis = document.querySelectorAll('.input-group-addon'),
                country = document.getElementsByClassName(value1);
                console.log(country.length);
                // Point One
                var i;
                if (vis !== null) {
                    for (i = 0; i < vis.length; i++)
                        vis[i].className = 'input-group-addon inv';
                    console.log(country.length);
                    // Point Two
                }
                if (country !== null) {
                    for (i = 0; i < country.length; i++) {
                        country[i].className = 'input-group-addon';
                        // Point Three
                    }
                }
            });
    </script>

这件事已经困扰我一段时间了。我正在尝试获取中选定值的值

document.querySelectorAll('.input-group-addon')

并在中找到匹配的类名

document.getElementsByClassName(value1)

国家/地区的节点列表在第一点可用,在第二点更改为null。

我的代码中是否存在基本的逻辑或语法错误?

并且在点二处变为零

我想你的意思是名单是空的。变量不应该神奇地变成null

getElementsByClassName返回实时HTMLCollection。这意味着它将始终反映文档的当前状态。如果更改元素的类名,它将自动添加到集合中或从集合中删除。

如果您不希望这样,那么可以使用querySelectorAll,它返回一个活动的集合,或者将该集合转换为数组。