className未附加到js对象

时间:2015-06-14 12:14:17

标签: javascript html classname

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

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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();

答案 1 :(得分:2)

使用

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

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