0

次のコードは、レバーを前後に動かして正方形の色を変更するためのものです。しかし、以下は私が立ち往生しているところに関係する要素の骨組みです。IEが表示するエラーは、「プロパティ'appendChild'の値:オブジェクトがnullまたは未定義です」です。これは、コードの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 または未定義です [1]。XXXX でマークされた行で appendChild を実行しようとすると、エラーが発生します。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.divElemつまり、 sliderLine コンストラクターでは何も割り当てません。そのため、(sliderLine インスタンス) のプロパティdivElemline何もありません。「nothing」は、プロパティを取得しないundefinedorとして実装できます。そのため、またはnullのプロパティにアクセスしようとすると、IE は「オブジェクトが null または未定義です」と表示しました。nullundefined

于 2012-11-18T02:33:02.550 に答える