2014-01-22 18 views
2

我發現這個代碼經由http://mrpaolo.github.io/mootools30days/20.html組默認元素來顯示的onload - mootools的

var showFunction = function() { 
    $$('.hidden').setStyle('display', 'none'); 
    this.setStyle('display', 'block'); 
} 


window.addEvent('domready', function() { 
    var elOneB = $('contentoneB'); 
    var elTwoB = $('contenttwoB'); 
    var elThreeB = $('contentthreeB'); 

    $('oneB').addEvent('click', showFunction.bind(elOneB)); 
    $('twoB').addEvent('click', showFunction.bind(elTwoB)); 
    $('threeB').addEvent('click', showFunction.bind(elThreeB)); 
}); 

我想使元件中的一個默認顯示的onload。這是可行的嗎?

回答

2

該代碼非常嚴格。很多這些教程都非常糟糕/過時/與最佳實踐脫節。

無論如何,你應該轉換爲乾燥少的東西。得到它當作是工作,你可以這樣做:

$('twoB').fireEvent('click'); 

,但你真的應該重構的東西,是不是連接到IDS和硬隱含綁定或內嵌CSS樣式等

(function(){ 
    var contentDivs = document.getElements('div.content'); 
    document.getElements('button.button-control').addEvent('click', function(e){ 
     contentDivs.addClass('hide'); 
     document.getElement('div.content.' + this.get('data-content')).removeClass('hide'); 
    }); 

}()); 

// pick one to show 
document.getElement('button').fireEvent('click'); 

此的DOM:

<button class="button-control" data-content="content-one">one</button> 
<button class="button-control" data-content="content-two">two</button> 
<button class="button-control" data-content="content-three">three</button> 

<div class="content hide content-one"> 
    one 
</div> 
<div class="content hide content-two"> 
    two 
</div> 
<div class="content hide content-three"> 
    three 
</div> 

和CSS的

.hide { 
    display: none; 
} 

http://jsfiddle.net/dimitar/a7K4c/ - 它將允許您通過簡單地修改不接觸代碼的標記來輕鬆添加更多項目。

+0

謝謝兩個!我已經在右欄的這個頁面上試過你的上面的代碼,但似乎無法弄清楚我做錯了什麼。有任何想法嗎? – user3206244

+0

我真的很喜歡你的代碼,它的優雅和簡單,但我似乎無法弄清楚爲什麼它不會刪除這個頁面上的.hide類在http://www.landnsand.co.za/dev/test/news右欄。我在你的小提琴中實施了它,但必須缺少一些東西。 – user3206244

+1

你只做了標記,但js代碼不存在。如果您只需將代碼粘貼到控制檯中,然後單擊按鈕,就可以工作。 –

0

你可以試試下面的代碼

<body onLoad="setInterval('var elOneB = $('contentoneB');',1000)"> 

線 「< 」頭「>」 節之後。