javascript - element.className 对 html 没有影响

标签 javascript

我尝试动态添加类名,但没有任何反应,也没有收到任何错误

function    update(element,content,klass)   {   

    var p   =   element.firstChild  ||  document.createElement("p");    
    p.textContent   =   content;    

    if(klass)   {
    p.className = klass;
    console.log(p.className);
    }
    element.appendChild(p);
}

这是我调用更新函数的地方

function check(answer,index){
    if(answer === quiz.questions[index].answer){
        update($feedback,"Correct!","right");
        score++;
    }
    else{
        update($feedback,"Wrong!","wrong");
    }

}

console.log className 输出是正确的...“错误”和“正确”,不知道为什么我没有将类添加到我的段落中

最佳答案

您正在覆盖 setAttribute 方法而不是调用它,尽管设置属性更好。

p.className = klass;
<小时/>

此外,如果 .firstChild 是文本节点(可能只是空格),则该类添加将不起作用。相反,请使用 .firstElementChild

var p = element.firstElementChild || document.createElement("p"); 
<小时/>

此外,您应该知道,如果确实存在 .firstElementChild,则将其传递给 .appendChild 会将其重新定位最后子节点的位置。如果您不希望这样做,那么您应该只在没有元素的情况下进行附加操作。

function update(element,content,klass) {   
    var p = element.firstElementChild || element.appendChild(document.createElement("p"));    
    p.textContent = content;    

    if(klass) {
        p.className = klass;
    }
}

关于javascript - element.className 对 html 没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47781062/

相关文章:

javascript - 保持div之间的悬停状态处于事件状态

javascript - Lodash 过滤以返回对象而不是长度为 1 的数组

javascript - 当使用 jquery 显示元素时,焦点可见性会丢失

javascript - 在无法访问 html 的情况下重新排序 Div

javascript - Angular : Apply a directive only if element is a textarea

javascript - 使用 CSS、jQuery 和 HTML 的简单游戏

javascript - 如何从 API 中解构数组对象并放入状态?

javascript - 如何在 html 表格中启用新添加的行可点击?

javascript - 如何隐藏单击的按钮1并显示按钮2以及单击按钮2隐藏按钮2并在AngularJS中显示按钮1?

javascript - 为什么我无法使用点语法访问返回的函数