2009-08-06 37 views
0

我有點被Facebook的Facebook實現難住。我想在複選框上設置一個偵聽器,以便在檢查時更改ID可以獲得的元素的類。使用FBJS更改CSS

我一直在使用測試控制檯,並嘗試過各種排列組合。 Javascript不是我的第一語言,也不是我的第二,第三...任何人都可以通過翻譯我的僞代碼來幫助我?

<input class="one" type="checkbox" onclick="setcolor(this.checkedornot)"> 
    function setcolor(checkedornot){ 
     if checkedornot == true {set p.one to p.one.GREEN} 
     if checkedornot == false {set p.one to p.one.RED} 
    } 

顯然這不是JavaScript,但這是我如何最好地解釋我需要的功能。在我的短暫測試中,FBJS甚至沒有註冊onClick事件。謝謝!

回答

3

FBJS都有自己的getter和setter。獲得「檢查」和設置/刪除類是不同的。而且,如果要添加「綠色」課程,則必須移除「紅色」課程,反之亦然。或者,如果您只想覆蓋元素的所有類,則可以使用setClassName(class)方法,因爲它的破壞性較小,所以我會在回答中使用add/remove類方法。

FBJS Docs: Manipulating Objects

對於onclick事件,我認爲你應該使用addEventListener如果的onclick不起作用。 Events in FBJS

FBJS不使用this.checked,而是使用getChecked。因此,當您添加事件偵聽器(用於「單擊」)時,爲arg添加一個「this.getChecked()」。

setColor(this.getChecked()); 

而對於功能:

function setColor (isChecked) { 
    var p = document.getElementById(ID-OF-P); 
    if (isChecked) { 
     p.removeClassName("red"); 
     p.addClassName("green"); 
    } else { 
     p.removeClassName("green"); 
     p.addClassName("red"); 
    } 
} 

我是JS福利局太雖然。我認爲這是正確的。

+0

關閉kmiyashiro,你需要this.getChecked()。這是一個函數,而不是一個屬性,所以你需要調用它。你對FBJS是正確的,儘管它是自定義方法。 – mixonic 2009-08-06 13:18:54

+0

啊,我知道了。我甚至想過添加它,但我並不完全確定。謝謝,我在回答中改變了它。 – kmiyashiro 2009-08-06 15:58:02

0

對於需要使用onclick事件......

this.checked 

然後你的函數看起來就像這樣:

var setColor = function(isChecked) { 
    var myElement = document.getElementById("one"); 
    if (isChecked) { 
     myElement.className = "myGreenClass"; 
    } else { 
     myElement.className = "myRedClass"; 
    } 
}; 
+0

FBJS具有比正常JS語法不同的getter和setter。查看http://wiki.developers.facebook.com/index.php/FBJS – kmiyashiro 2009-08-06 07:23:29