开发者问题收集

nodeList.style.display = 'flex' 不起作用

2021-05-04
271

我找不到问题所在。我只是收到“Uncaught TypeError:无法设置未定义的属性‘display’”这个错误。

function filterTodo(e){
const todos = todoList.childNodes;
todos.forEach(function(todo){
    switch (e.target.value){
        case "all" :
            todo.style.display = 'flex';
            break;

        case "completed" :
            if(todo.classList.contains('completed')){
                todo.style.display = 'flex';
            }
            break;
    }
});

>

2个回答

childNodes 包含 所有 个节点,包括文本节点(没有 style 属性)。

请改用 children 。它提供子 元素

Quentin
2021-05-04

您可以在此处使用属性解析....

todo?.style?.display = 'flex'

它的作用是首先检查属性。如果找到确切的属性,则分配值,否则跳过。

Showrin Barua
2021-05-04