在带有复选框的功能之间切换?

Posted

技术标签:

【中文标题】在带有复选框的功能之间切换?【英文标题】:switch between functions with checkboxes? 【发布时间】:2013-12-08 12:32:16 【问题描述】:

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

有两个不同的。用户类型、学生和其他。 许多地方和商店为学生提供折扣,因此我会通过一个更改某些脚本的复选框来实现这一点。 这是我的例子(尽可能简化):

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

//-------------------------------------------------

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

【问题讨论】:

【参考方案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;

【讨论】:

【参考方案2】:

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

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

更新:这里有一些东西可以为你指明正确的方向,

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
    

【讨论】:

很新鲜,你可能已经注意到了,呵呵,第二对括号不起作用,但更优雅的解决方案会更好,任何指针:)? 更流畅了,我花了一些时间来解决它,但现在它可以正常工作了,谢谢:)!

以上是关于在带有复选框的功能之间切换?的主要内容,如果未能解决你的问题,请参考以下文章

数据表与复选框切换

单击功能后在表格中切换复选框

PHP、AJAX、MySQL 的复选框过滤以及 AND/OR 之间的切换

在复选框和文本框上使用相同的功能切换可见性[重复]

在android上创建一个三态复选框

带有复选框的 JTree