javascript - Ajax 的 JS 错误 : TypeError: Cannot set property 'innerHTML' of null (not a duplicate, 其他答案均无效)

标签 javascript ajax innerhtml

当我的代码运行并应该在 Ajax 加载中编辑 DOM 元素时,它不起作用并给出错误:TypeError: Cannot set property 'innerHTML' of null。

我已经检查了几乎所有内容,并且我相信我没有在类名或任何内容上犯错误。

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Ajax Crash Course</title>
</head>
<body>
     <button class="userBtn">Click for User</button>

    <br>
    <br>

    <div class="DOMInsertions"></div>

    <script src="ajax2.js"></script>
</body>
</html>

JavaScript:

const userBtn = document.querySelector('.userBtn');
let listNum = 0;


userBtn.addEventListener('click', userCall);

function userCall() {

    const xhr = new XMLHttpRequest;

    xhr.open('GET', 'user.json', true);

    xhr.onload = function() {
        if( xhr.status === 200 ){
            let user = JSON.parse(this.responseText);
            let { name, id, email } = user;

            let className = `userList_${listNum}`;

            textToDOM('h1', 'User:', 'heading');

            textToDOM('ul', 'Yo', className)

            let list = document.querySelector(className)

            list.innerHTML = `
            <li>ID: ${id} </li>
            <li>Name: ${name} </li>
            <li>Email: ${email}</li>
            `
            listNum++;
        }
    }

    xhr.send();
}

最佳答案

好吧,我实际上已经重建了脚本并发现了一些问题:

DOMInsert 定义不明确。您可以通过向注入(inject)容器添加 ID 并通过 ID 引用它来解决此问题:

<div class="DOMInsertions" id="dominsert"></div>

然后使用这个:

document.getElementById('dominsert').appendChild(addition);

第二个问题是你的 className 没有定义。因此,您的“列表”是未定义的。

关于javascript - Ajax 的 JS 错误 : TypeError: Cannot set property 'innerHTML' of null (not a duplicate, 其他答案均无效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57277443/

相关文章:

javascript - insidehtml 无法更改(不断重置)

javascript - 带 Angular 模拟的 Protractor 抛出 "Window Not Defined"

php - 如何在javascript中读取字符串的php数组

javascript : create objects dynamically

使用 ReactDOMServer 和 insideHTML 时,JavaScript 函数调用在表格下拉列表中不起作用

javascript - 将当前 iframe 内容导出为 HTML 文件

javascript - 循环遍历类并改变颜色

javascript - Ajax 无法从 php 文件加载内容

javascript - AJAX JQuery 从 html 中删除但不从 mysql 数据库中删除

javascript - 发送 JSON stringify 到 PHP 如何读取它