0

我对 Javascript 的 Facebook 实现有点困惑。我想在复选框上设置一个侦听器,以便在选中时更改我可以通过 ID 获取的元素的类。

我一直在使用测试控制台并尝试了各种排列。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 事件。谢谢!

4

3 回答 3

3

FBJS 有自己的 getter 和 setter。获得“检查”和设置/删除类是不同的。red而且,如果要添加课程,则必须删除green课程,反之亦然。或者,如果您只想覆盖元素的所有类,则可以改用该setClassName(class)方法,我将在我的答案中使用add/remove类方法,因为它的破坏性较小。

FBJS 文档:操作对象

对于该onclick事件,我认为您应该使用addEventListenerifonclick不起作用。FBJS 中的事件

FBJSthis.checked使用getChecked. 因此,当您添加事件侦听器(for click)时,this.getChecked()arg.

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新手。我认为这是对的。

于 2009-08-06T07:22:44.980 回答
0

对于您需要使用的 onclick 事件...

this.checked

然后你的函数将如下所示:

var setColor = function(isChecked) {
    var myElement = document.getElementById("one");
    if (isChecked) {
        myElement.className = "myGreenClass";
    } else {
        myElement.className = "myRedClass";
    }
};
于 2009-08-06T07:09:45.300 回答
0

kmiyashiro 基本上是正确的,除了它应该是类名的 getter 和 setter

  if (isChecked) {
    p.setClassName("green");
} else {
    p.setClassName("red");
}

由于它只是一个设置方法并且没有删除方法,因此您无需担心删除类名,它只会被覆盖。

查看此列表以获取更多 getter 和 setter http://wiki.developers.facebook.com/index.php/FBJS#Manipulating_Objects

于 2009-08-08T20:05:44.620 回答