即使声明了变量,也会出现未定义的错误

时间:2021-03-27 04:24:05

标签: javascript jquery

我正在尝试创建一张存储所有信息的卡片。但是,在创建变量并尝试向其附加文本后,出现未定义错误。我应该改变什么?

错误如下:

<块引用>

未捕获的类型错误:标题未定义 createCards http://localhost/Projects/diary/:86 createCards http://localhost/Projects/diary/:75 成功 http://localhost/Projects/diary/:103 jQuery 6 http://localhost/Projects/diary/:96 jQuery 13 日记:86:13 createCards http://localhost/Projects/diary/:86 forEach 自托管:206 createCards http://localhost/Projects/diary/:75 成功 http://localhost/Projects/diary/:103 jQuery 6 http://localhost/Projects/diary/:96 jQuery 13

function cardClass(status) {
    let defaultClass = ["card", "mb-3", "h-100", "text-center", "mw-25"]
    switch (status) {
        case 0:
            return defaultClass.concat(["border-danger"]); break;  // coming soon
        
        case 1:
            return defaultClass.concat(["border-warning"]); break;  // developing
    
        case 2:
            return defaultClass.concat(["border-success"]); break;  // success

        case 3:
            return defaultClass.concat(["border-info"]); break;  // improving (beta)

        case 4:
            return defaultClass.concat(["border-danger"]); break;  // testing
        
        default:
            return defaultClass.concat(["border-info"]); break;  // unknown
    }
}

function createCards(data) {
    data.forEach(obj => {
        const titleClass = ["card-header", "text-primary", "fw-bold"];
        const card_class = cardClass(obj.status);

        let col = document.createElement("div").classList.add("col");
        let card = document.createElement("div").classList.add(...card_class);
        let title = document.createElement("div").classList.add(...titleClass);
        let body = document.createElement("div").classList.add("card-body");
        let text = document.createElement("p").classList.add("card-text");

        // Append text
        title.innerText = obj.title; // This line is causing the error

        // // Append elements
        // body.appendChild(text); card.appendChild(title); card.appendChild(body)
        // col.appendChild(card);
        // document.getElementById("features").appendChild(col);   
        
    })
}
$("#features").ready(() => {
    $.ajax({
        type: "POST",
        url: 'functions/getData.php',
        data: { get: "features" },
        success: function (data) {
            checkJson = JSON.parse(data);
            if (checkJson){
                createCards(checkJson);
            }
        },
        error: function (xhr, opt, err) {
            console.warn(xhr, opt, err)
        }
    })
})

我确定我声明了变量,但它抛出了一个错误。提前感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

document.createElement("div").classList.add("test") 不返回您的元素,它返回未定义的 add 方法的结果。

你需要这样的东西。

let title = document.createElement("div");
title.classList.add(...titleClass);
...
title.innerText = obj.title;

此时您的所有变量(列、卡片、标题、正文、文本)实际上都未定义。

答案 1 :(得分:0)

您可以在 MDN 中看到 mvn compile 返回 $ rvm install 3.0.0

你可能想做的是

Checking requirements for osx.
Error: Calling `brew search` with no arguments to output formulae is disabled! Use `brew formulae` instead.
Error: Calling `brew search` with no arguments to output formulae is disabled! Use `brew formulae` instead.
Error: Calling `brew search` with no arguments to output formulae is disabled! Use `brew formulae` instead.
Error: Calling `brew search` with no arguments to output formulae is disabled! Use `brew formulae` instead.
Error: Calling `brew search` with no arguments to output formulae is disabled! Use `brew formulae` instead.
Error: Calling `brew search` with no arguments to output formulae is disabled! Use `brew formulae` instead.
Installing requirements for osx.
Updating system......
Installing required packages: gcc@6, lib.|