2009-08-12 32 views
0

我剛接觸Javascript和Mootools,並且在理解某些內容時遇到了一些麻煩,特別是因爲有關Mootools的文檔是,我們應該說,缺乏充其量。

我的問題是關於$選擇器。

爲什麼我可以鏈接一些屬性,而不是其他屬性?

例如爲什麼

$('results').style.border = "1px solid #000000"; 

工作,但

$('results').innerHTML = "foo"; 

不?

在此先感謝。

+1

你可能想看看這個:http://mootools.net/docs/core/Element/Element#Element-Properties:html – Amber 2009-08-12 19:39:22

回答

4

第一個例子實際上並不是一個「鏈接」的例子。

style是表示元素CSS樣式的DOM標準對象。它與MooTools無關 - 它只是訪問對象屬性的標準點符號。

「鏈」是當一個對象上的操作的結果在手術後返回對象本身,讓你做這樣的東西:

$('id').show().move_left(200).fadeOut(); 

最後,那第二個例子應該工作。你應該發佈實際的來源。

+0

一旦連接了Mootools方法,你是否不再能夠使用正常的內置Javascript函數?我以爲$也作爲document.getElementById的快捷方式? – 2009-08-12 20:46:34

+0

它比這更復雜一點,所有不同的瀏覽器都有自己的怪癖和特徵。 Moo有一些包裝函數用於更改各種屬性,字段和值,從而隱藏所有瀏覽器兼容性內容。你當然可以在安全的東西上混搭,但總的來說,Moo非常有你應該堅持的風格。這裏的其他帖子顯示了像.setStyles(),.set(「html」,「foo」),.getValue()等這些輔助函數的例子。雖然混合和匹配'可以'讓你陷入混亂,最好使用包裝以方便(閱讀和調試) – 2009-08-14 13:05:27

4

三聯的答案很棒。我只是想幫助你從mootools中獲得更多的mo mo。

$('results').setStyle('border','1px solid #000'); 
$('results').set('html','foo'); 

// all together now 
$('results').setStyle('border','1px solid #000').set('html','foo'); 

你不想使用innerHTML了,如果你抓住與$元素(或使用任何框架,真的)。

函數在調用時會返回一些內容。大多數mootools中的方法(函數)返回它改變的東西(比如$('results')),所以你可以鏈接另一個函數。

你的例子不是鏈接的。他們只是選擇你的對象的屬性,而不是調用方法。


Mootools文檔太棒了。你還不夠熟悉這門語言。 Mootools被認爲具有更陡的學習曲線,所以這可能是問題的一部分。

我和你一樣,對於mootools和javascript一般都是新手。經過一段時間後,我想到了mootools,並且在不知不覺中同時學習了JavaScript。文件是不可或缺的。

+1

您可以使用1個setter,因爲1.2 - element.set({styles:{prop:value,prop:value},html:「some string」});是的,您可以使用$作爲document.getElementById的簡單快捷方式。之後你應用的主要是基於元素原型(訪問本地或mootools函數) - 但返回的元素保留了它們之前可能擁有的任何品質......我一直認爲.innerHTML將會工作,只要你的瀏覽器允許它。檢查這個:http://mooshell.net/RRVWZ。你不應該直接訪問屬性 - 你不能鏈接方法,它可能不是跨瀏覽器。 – 2009-08-16 11:13:31