JavaScript;未捕获的类型错误

标签 javascript

(function IIFE() {
    'use strict';
    
    var buttons = document.getElementsByTagName('button');
    
    for (let i = 0, l = buttons.length; i <= l; i += 1) {
        buttons[i].onclick = function () {
            
            for (let i = 0; i <= l; i += 1) {
                
                buttons[i].className = '';
                
                this.className = 'active';
            }
            
        };
    }
    
    
    
    // just for testing purpose
    for (var k = 0; k <= 10; k +=1){
        alert(k);
    }
      
}());
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Test UI</title>
    <link href="style.css" rel="stylesheet">
</head>
<body>

    <ul>
        <li><button class="active">A</button></li>
        <li><button>B</button></li>
        <li><button>C</button></li>
    </ul>
                                 
<script src="script.js"></script>
</body>
</html>

enter image description here

我想知道为什么alert() 没有完成工作。 我之前不知道会出现故障,因为它按预期工作。

现在我想知道为什么buttons[i]未定义?

代码是用ES6编写的。

感谢您的帮助

最佳答案

Now I am wondering why is buttons[i] undefined?

因为你的条件是i <= li变成l ,然后buttons[i]变成undefined - 记住索引从 0 开始

演示

(function IIFE() {
    'use strict';
    
    var buttons = document.getElementsByTagName('button');
    
    for (let i = 0, l = buttons.length; i < l; i += 1) {
        buttons[i].onclick = function () {
            
            for (let i = 0; i < l; i += 1) {
                
                buttons[i].className = '';                    
                this.className = 'active';
            }                
        };
    }
    // just for testing purpose
    for (var k = 0; k <= 10; k +=1){
        alert(k);
    }
      
}());
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Test UI</title>
    <link href="style.css" rel="stylesheet">
</head>
<body>

    <ul>
        <li><button class="active">A</button></li>
        <li><button>B</button></li>
        <li><button>C</button></li>
    </ul>
                                 
<script src="script.js"></script>
</body>
</html>

关于JavaScript;未捕获的类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47432089/

相关文章:

javascript - 错误: Unnecessary use of boolean literals in conditional expression

javascript - 如何重新呈现文本字段的 javascript onchange?

javascript - 给定一个序列和键,创建一个函数来找出序列中的字符是否按照键的顺序出现

JavaScript 函数未在 Visual Studio Code 中将任何内容记录到终端

javascript - 如何检测选择了哪个选项?

javascript - 入门 - Controller 不是函数未定义

javascript - 将增量计数器连接到 json 响应循环内的数组选择器的末尾

javascript - 错误解析SDK : Cannot sign up user with an empty name

javascript - jQuery $.Deferred 与 window.top.postMessage()

javascript - 我们如何覆盖 navigator.getBattery()?