如何在JavaScript中向DOM元素添加类?

如何在JavaScript中向DOM元素添加类?,javascript,dom,Javascript,Dom,如何为div添加类 var new_row = document.createElement('div'); 这里有关于MDN的更多信息:这里是使用函数方法工作的源代码 <html> <head> <style> .news{padding:10px; margin-top:2px;background-color:red;color:#fff;} </style> <

如何为
div
添加类

var new_row = document.createElement('div');

这里有关于MDN的更多信息:

这里是使用函数方法工作的源代码

<html>
    <head>
        <style>
            .news{padding:10px; margin-top:2px;background-color:red;color:#fff;}
        </style>
    </head>

    <body>
    <div id="dd"></div>
        <script>
            (function(){
                var countup = this;
                var newNode = document.createElement('div');
                newNode.className = 'textNode news content';
                newNode.innerHTML = 'this created div contains a class while created!!!';
                document.getElementById('dd').appendChild(newNode);
            })();
        </script>
    </body>
</html>

.news{填充:10px;页边空白顶部:2px;背景色:红色;颜色:#fff;}
(功能(){
var countup=这个;
var newNode=document.createElement('div');
newNode.className='textNode新闻内容';
newNode.innerHTML='此创建的div在创建时包含一个类!!!';
document.getElementById('dd').appendChild(newNode);
})();

使用
.classList.add()方法:

const元素=document.querySelector('div.foo');
element.classList.add('bar');
log(element.className)

还值得一看:

var el = document.getElementById('hello');
if(el) {
    el.className += el.className ? ' someClass' : 'someClass';
}

在JavaScript中,DOM也可以这样做:

// Create a div and set class
var new_row = document.createElement("div");
new_row.setAttribute("class", "aClassName");
// Add some text
new_row.appendChild(document.createTextNode("Some text"));
// Add it to the document body
document.body.appendChild(new_row);
var newItem=document.createElement('div');
newItem.style=('background-color:red');
newItem.className=('new_class');
newItem.innerHTML=('some long text with ticker$DDSSD');
var list=document.getElementById('x-auto-1');
list.insertBefore(newItem,list.childNodes[0]);

如果您想创建一个新的输入字段,例如
文件
类型:

 // Create a new Input with type file and id='file-input'
 var newFileInput = document.createElement('input');

 // The new input file will have type 'file'
 newFileInput.type = "file";

 // The new input file will have class="w-95 mb-1" (width - 95%, margin-bottom: .25rem)
 newFileInput.className = "w-95 mb-1"
输出将为:


如果要使用JavaScript创建嵌套标记,最简单的方法是使用
innerHtml

var tag = document.createElement("li");
tag.innerHTML = '<span class="toggle">Jan</span>';
var tag=document.createElement(“li”);
tag.innerHTML='Jan';
输出将是:

<li>
    <span class="toggle">Jan</span>
</li>
  • 跨浏览器解决方案 注意:
    classList
    属性在Internet Explorer 9中不受支持。以下代码适用于所有浏览器:

    资料来源:

    这将起作用;-)

    这是更好的方法

    let new_row = document.createElement('div');
    new_row.setAttribute("class", "classname");
    new_row.setAttribute("id", "idname");
    

    如果要创建大量元素,可以创建自己的基本createElementWithClass函数

    function createElementWithClass(type, className) {
      const element = document.createElement(type);
      element.className = className
      return element;
    }
    
    我知道这是非常基本的,但是能够调用下面的代码就不那么混乱了

    const myDiv = createElementWithClass('div', 'some-class')
    
    与许多

     const element1 = document.createElement('div');
     element.className = 'a-class-name'
    
    一遍又一遍。

    
    
    <script>
        document.getElementById('add-Box').addEventListener('click', function (event) {
            let itemParent = document.getElementById('box-Parent');
            let newItem = document.createElement('li');
            newItem.className = 'box';
            itemParent.appendChild(newItem);
        })
    </script>
    
    document.getElementById('add-Box')。addEventListener('click',函数(事件){ 让itemParent=document.getElementById('box-Parent'); 让newItem=document.createElement('li'); newItem.className='box'; itemParent.appendChild(newItem); })
    如果要在一个方法中创建多个元素

    函数createElement(el,选项,listen=[],appendTo){
    let element=document.createElement(el);
    Object.keys(options).forEach(函数(k){
    元素[k]=选项[k];
    });
    如果(listen.length>0){
    听。forEach(函数(l){
    元素。addEventListener(l.event,l.f);
    });
    }
    appendTo.append(元素);
    }
    让main=document.getElementById('addHere');
    createElement('button',{id:'myBtn',className:'btn btn primary',textContent:'Add Alert'}[{
    事件:“单击”,
    f:函数(){
    createElement('div',{className:'alert-alert-success mt-2',textContent:'Working'},[],main);
    }
    }](主要),
    
    
    
    设置多个类名怎么样?@spoone
    new\u row.className=“aClassName1 aClassName2”它只是一个属性,你可以分配任何你喜欢的字符串,即使它会导致无效的htmlI也会建议
    new_row.classList.add('aClassName')因为您可以添加多个类names@StevenTsooo请注意,
    classList
    在IE9或以下版本中。是否有一种方法可以在一行代码中创建具有类名的元素,并且仍然可以获得对该元素的引用?例如:myEL=document.createElement('div')。addClass('yo')将不起作用。那么?举个例子,这没什么错。Re“while created”:你的意思是“while being created”?回应者,而不是这里的评论。提前谢谢,我会给你解释的。例如,你所说的“函数方法”是什么意思?你能详细说明一下吗?谢谢。很糟糕,规范不允许将类指定为CealEnter的参数。如果要在不删除其他类的情况下添加类,请参见解释为什么发布此类,这将有助于其他人学习。因为这是本机JavaScript/vanilla JavaScript,不需要任何其他库或框架。需要解释。需要解释。这不是一个好的解决方案,因为这种方法不适用于所有浏览器。目前只有60%的浏览器支持setAttribute。
    function createElementWithClass(type, className) {
      const element = document.createElement(type);
      element.className = className
      return element;
    }
    
    const myDiv = createElementWithClass('div', 'some-class')
    
     const element1 = document.createElement('div');
     element.className = 'a-class-name'
    
    <script>
        document.getElementById('add-Box').addEventListener('click', function (event) {
            let itemParent = document.getElementById('box-Parent');
            let newItem = document.createElement('li');
            newItem.className = 'box';
            itemParent.appendChild(newItem);
        })
    </script>