2013-12-08 48 views
0

我试图简化我的播放网站上的一些信息。用复选框切换功能?

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

<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,-";}} 
    } 
} 
//------------------------------------------------- 

这不杀剧本,但没有任何信息,要么返回。

回答

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 
    } 
} 
+0

在这个漂亮的新鲜,因为你可能已经注意到了,嘿嘿,第二对括号没有工作,而是一个更优雅的解决方案将是可取的,任何指针:)? – Freshman

+0

@Freshman没问题,查看更新 –

+0

更平滑,花了一些时间让它挂掉,但现在它工作正常,谢谢:)! – Freshman

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;