如何在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);
}
}](主要),代码>
设置多个类名怎么样?@spoonenew\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>