2009-08-06 35 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