用复选框切换功能?

时间:2013-12-08 12:32:16

标签: javascript html user-defined-functions

我正在尝试简化我的游戏网站上的一些信息。

有两个不同之处。用户类型,学生和其他人。 许多地方和商店为学生提供折扣,因此我可以使用一个更改某些脚本的复选框来访问它。 这是我的例子(尽可能地简化):

<head>
<script TYPE="text/javascript" SRC="script/script_uteplasser.js"></script>
</head>
<body>
<form action="">
<input type="checkbox" id="checkbox_student"  onclick="student();"><span>I'm A student!</span></input></form>
(...)
</body>

javascript(script_uteplasser):

//--------------------SAMFUNDET---------------------
samfundet = "...blablablabla..." + cc_samfundet() + "...blablablabla...";
//----INNGANGSAV. SAMFUNDET----

var checkbox1 = document.getElementById("checkbox_student");
function student(){
    if (checkbox1.checked){
    function cc_samfundet(){var d=new Date(); var theDay=d.getDay(); switch (theDay) { case 1: return "Free"; break;  case 2: return "Free"; break;  case 3: return "Free"; break;  case 4: return "Free"; break;  case 5: return "Free"; break;  case 6: return "Free"; break;  case 0: return "Free";}}
    }
    else{
    function cc_samfundet(){var d=new Date(); var theDay=d.getDay(); switch (theDay) { case 1: return "100,-"; break;  case 2: return "100,-"; break;  case 3: return "100,-"; break;  case 4: return "100,-"; break;  case 5: return "100,-"; break;  case 6: return "100,-"; break;  case 0: return "100,-";}}
    }
}
//-------------------------------------------------

这不会杀死脚本,但也不会返回任何信息。

2 个答案:

答案 0 :(得分:1)

为什么要重新定义功能?

如果选中复选框,您可以签入您的功能。如果您想真正重新定义函数,请使用以下代码:

//declare your function :
function cc_samfundet () {
    //...
}
//or :
var cc_samfundet2 = function () { /* ... */ };

//redefine your function :
cc_samfundet = function () {
    //...
}
//or with an existing function :
cc_samfundet = cc_samfundet2;

答案 1 :(得分:0)

它不会返回任何内容,因为您只是在评估中定义了您的功能。如果之后添加第二对括号,它应该按照您的意图工作。

那就是说,这是一个非常糟糕的设计模式。首先,你真的不需要在这里做你正在做的事情。其次是使用完全独立的逻辑两次创建相同的命名函数 - 这几乎制动了每个良好的编程原理。

更新:这是指向正确的方向,

var checkbox1 = document.getElementById("checkbox_student");
// Assuming this function should do something else too?
function student() {
    cc_samfundet(checkbox1.checked);
}

var cc_samfundet = function (isStudent) {
    var d = new Date();
    var theDay = d.getDay();
    switch (theDay) {
        case 1:
            return isStudent ? "Free" : "100,-";
            // and so on
    }
}