0

下面的代码是让一个杠杆来回移动并改变一个正方形的颜色。但是,以下是我被卡住的元素的基本内容。IE 给我的错误是“属性 'appendChild' 的值:对象为空或未定义” 这位于代码中的 XXXXX 处。此外,当我编写此代码时,我对何时使用“”以及何时使用我们感到困惑。它运行良好,直到 XXXX 出现错误。

  function sliderBox(style){ 
     this.style = style;
     var line = null;
     var bar = null;
     var divElem1 = document.createElement('div');
     this.divElem = divElem1.setAttribute('class', 'sliderBox');

    this.constructDOM = function(){ 
     line = new sliderLine();
     bar = new sliderBar(style);
     var ldE = line.divElem;  
     ldE.appendChild(bar.divElem);  XXXXXX PROBLEM HERE
     var tdE = this.divElem;
     tdE.appendChild(line.divElem);
   }    


 }

  function sliderLine(){
    var divElem1 = document.createElement('div');
    this.divElem = divElem1.setAttribute("class", "sliderLine");
  }

  function sliderBar(style){
    this.style = style;
    var divElem1 = document.createElement('div');
    var sBs = "sliderBar" + style;
    this.divElem = divElem1.setAttribute('class', sBs);
  }

有人知道吗?

4

2 回答 2

1

您在代码的最后一行将 divElem 分配给 setAttribute 的返回值。setAttribute 的返回值为 null 或 undefined [1]。当您尝试在标有 XXXX 的行中附加Child 时,会出现错误。您应该将 sliderBar 函数更改为

function sliderBar(style){
   this.style = style;
   var divElem1 = document.createElement('div');
   var sBs = "sliderBar" + style;
   divElem1.setAttribute('class', sBs);
   this.divElem = divElem1;
}

[1] http://reference.sitepoint.com/javascript/Element/setAttribute

于 2012-11-18T01:22:13.943 回答
0

简而言之,element.setAttribute方法不返回任何内容(参见this)。换句话说,您this.divElem在 sliderLine 构造函数中没有分配任何内容。这就是为什么(sliderLine 实例)的属性什么都不是divElemline"nothing" 可以实现为undefinedor null,它不获取任何属性。因此,当我们尝试访问 or 上的属性时,IE 给了我们“对象为空或未定义nullundefined

于 2012-11-18T02:33:02.550 回答