CS50 Uncaught TypeError:无法将属性“禁用”设置为 null [重复]

Posted

技术标签:

【中文标题】CS50 Uncaught TypeError:无法将属性“禁用”设置为 null [重复]【英文标题】:CS50 Uncaught TypeError: Cannot set property 'disabled' of null [duplicate] 【发布时间】:2021-10-15 02:33:28 【问题描述】:

我正在参加 CS50 网络编程课程。

我尝试以相同的方式进行操作,但是它不起作用。

我想知道代码有什么问题。

为什么我添加“DOMContentLoaded”后它不起作用?

<!DOCTYPE html>
<html>
    <head>
        <script>
            document.addEventListener("DOMContentLoaded", function()

                document.querySelector('#submit').disabled = true;

                document.querySelector('#task').onkeyup = () =>
                    //task's input has keyup which represents "not null"
                    document.querySelector('#submit').disabled = false;
                ;

                document.querySelector('#new-task').onsubmit = () =>
                    
                    //creates new item for list
                    const li = document.createElement('li');
                    li.innerHTML = document.querySelector('#task').value;
                
                    //Add new item to task list
                    document.querySelector('#tasks').append(li);

                    //Clear input li
                    document.querySelector('#task').value = '';

                    document.querySelector('#submit').disabled = true;

                    return false;
                ;
                
            );
        </script>
        <title>List tasks</title>
    </head>
    <body>
        <h1>Task</h1>
        <ul id="tasks"></ul>
        <form id="new-task">
            <input id="task" autocomplete="off" autofocus placeholder="New Task" type="text">
            <input type="submit">
        </form>
    </body>
</html>

【问题讨论】:

【参考方案1】:

提交输入缺少您尝试查询的"submit" 中的id。它返回 null/undefined,这就是为什么尝试设置 disabled 值时出错的原因。在提交输入中添加id

    <body>
        <h1>Task</h1>
        <ul id="tasks"></ul>
        <form id="new-task">
            <input id="task" autocomplete="off" autofocus placeholder="New Task" type="text">
            <input id="submit" type="submit">
        </form>
    </body>

【讨论】:

以上是关于CS50 Uncaught TypeError:无法将属性“禁用”设置为 null [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我有这个 Uncaught TypeError: (0 , _normalizr.arrayOf) is not a function?

Bazel + Angular + SocketIO V3 原因:Uncaught TypeError: XMLHttpRequest is not a constructor

Uncaught TypeError: jQuery(...).each is not a function after update wordpress theme

Angular:错误:未捕获(承诺):TypeError:Object(...)不是函数

Uncaught TypeError: Bootstrap dropdown require Popper.js (https://popper.js.org)(下拉菜单)

Uncaught TypeError: (0 , _reactRouter.withRouter) 在 react-router 2.4.0 中以编程方式导航路由时不是一个函数