我希望在创建div元素时添加一个类。
var divElement = document.createElement('div')
应该回来
<div class="foo"></div>
编辑:
我不想在使用className或setAttribute创建另一个
document.createElement('div')
时重复添加类。我应该写document.createElement('div')
并且它应该在将来添加类。我们可以在document.createElement更改并执行吗?
最佳答案
如果您想覆盖document.createElement
的行为--真的,真的想--那么:
document.createElement = (function() {
var original_createElement = document.createElement.bind(document);
return function(tagName, cls) {
var elt = original_createElement(tagName);
elt.className = cls;
return elt;
};
}());
关于这件事的几个注意事项:
我们使用生命周期来分离闭包内的
original_createElement
。我们需要对
bind
执行document.createElement
操作,因为该函数需要document
上下文。此函数设计为在
document.createElement('div', 'foo')
中使用。如果您真的非常希望foo
被添加到以后创建的每个元素中,那么删除cls
参数并改为执行elt.className = 'foo';
操作。但无论如何我不建议这么做。
相反,如注释和其他答案中所述,定义您自己的函数n:
function createElementWithClassFoo() {
var div = document.createElement('div');
div.classList.add('foo');
return div;
}
或将其推广到任何类:
function createElementWithClass(cls) {
var div = document.createElement('div');
div.classList.add(cls);
return div;
}
然后打电话
var divElement = createElementWithClassFoo();
var divElement = createElementWithClass('foo');
关于javascript - 创建元素时添加类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26771764/