className 没有附加到 js 对象

className is not appended to the js object

var obj = document.createElement('div');
obj.className = 'className';

这将输出附加了 class 的 div 元素。

var obj = {
divE : function(){
   return document.createElement('div')}      
}
obj.divE().className = 'className';

这不会将 class 名称附加到 div 元素,即 obj.divE()

可能是什么原因?如何将 class 附加到 obj.divE();

obj.divE().className = 'className';语句的返回值为className字符串。您的代码创建一个元素,修改它的 className 属性 并且实际上什么都不做。如果存储返回值:

var value = obj.divE().className = 'className';

那么存储的值是 'className' 字符串而不是创建的元素。您必须创建元素,存储它,然后更新 className 就像您的第一个片段一样。

如果您想创建辅助函数,您可以编写代码:

var obj = {
  divE : function(cls) {
     var div = document.createElement('div');
     if ( cls ) {
        div.className = cls;
     }
     return div;
  }      
}

var createdElement = obj.divE('className');
var anotherElement = obj.divE();

使用

var ob = obj.divE();
    ob.className = "className";

每次直接调用 obj.divE() 都会创建一个新元素 object.so obj.divE().className = 'ClassName'; obj.divE().id= 'ClassName'; 两条线创建不同的对象。 你必须给它分配一些重用的地方。