2017-02-20 57 views
0

我想創建一個JS對象,如下創建對象並傳入元素,讓元素沒有定義

$(document).ready(function() { 

    var stickySidebar = { 
    element: this.element, 
    topSpacings: 110, 
    bottomSpacings: $(document).height() - (element.height() + element.offset().top), 

    getElement: function() { 
     return this.element; 
    }, 

    setElement: function (elm) { 
     element = elm; 
    }, 

    makeSideBarSticky: function() { 
     this.element.sticky({ 
     topSpacing: this.topSpacings, 
     bottomSpacing: this.bottomSpacings, 
     zIndex: 2 
     }); 
    } 

    } 
    var stickySidebars = Object.create(stickySidebar); 
    // var stickySidebars = stickySidebar($('#myElement')); 
    stickySidebars.setElement($('#myElement')); 
    stickySidebars.makeSideBarSticky(); 

}); 

不過,我不斷獲取沒有定義的元素。我意識到元素沒有定義。然而,我很困惑我如何傳入元素($('#myElement')),然後調用函數makeSideBarSticky。有人能幫助我嗎?

+0

提到這行? this.element.sticky(topSpacing:this.topSpacings, bottomSpacing:this.bottomSpacings, zIndex:2 });粘性不是一個功能 –

回答

0

你可以在你的HTML文檔中用id="myElement"創建一個空div,然後通過JS對其進行修改。這種方式的元素是肯定定義的

0

您正在爲該字段分配一個值。由於創建對象時發生錯誤,因此不會創建對象。分配值null而不是this.element

0

我不知道什麼是粘性的()是一個插件,你沒有提到你使用或類似的東西,但如果我們忽略了一會兒這個,試試這個:

$(document).ready(function() { 

    var stickySidebar = { 
    element: "", 
    topSpacings: "", 
    bottomSpacings: "", 

    getElement: function() { 
     return element; 
    }, 

    setElement: function (elm) { 
     element = elm; 
     topSpacings= 110; 
     bottomSpacings= $(document).height() - (element.height() + element.offset().top); 
    }, 

    makeSideBarSticky: function() { 
     element.sticky({ 
     topSpacing: topSpacings, 
     bottomSpacing: bottomSpacings, 
     zIndex: 2 
     }); 
    } 

    } 
    var stickySidebars = Object.create(stickySidebar); 
    // var stickySidebars = stickySidebar($('#myElement')); 
    stickySidebars.setElement($('#myElement')); 
    stickySidebars.makeSideBarSticky(); 

});