2012-11-18 188 views
0

以下代碼是爲了使槓桿前後移動並更改正方形的顏色。但是,下面是我卡住的元素的裸露骨骼。 IE給我的錯誤是「屬性的值'appendChild':object is null or undefined」它位於代碼中的XXXXX處。另外,當我寫這個代碼的時候,我對使用「」和什麼時候使用「的時候感到困惑。它運行良好,直到XXXX出現錯誤。javascript:未知 - 爲何未定義變量

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

有人知道嗎?

+0

node.setAttribute()返回undefined,而不是節點 – user943702

+0

@ user943702你是什麼意思? – user963070

+0

.setAttribute方法可以完成這項工作,但它的返回值不是對象(上下文)本身,而是未定義的。 @ user963070我建議你先學習JavaScript,然後解決問題。 – benqus

回答

1

您正在將divElem分配給代碼最後一行中setAttribute的返回值。 setAttribute的返回值爲null或undefined [1]。當您嘗試在標有XXXX的行中追加兒童時,會出現錯誤。你應該改變你滑塊功能

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

0

總之,element.setAttribute方法沒有返回值(見this)。換句話說,您在sliderLine構造函數中不指定this.divElem。這就是爲什麼line(sliderLine實例)的屬性divElem沒有任何意義。可以實施「無」,如undefinednull,其不獲得任何財產。因此,當我們嘗試訪問nullundefined上的一個屬性時,IE給了我們「對象爲空或未定義」。