【问题标题】:switch between functions with checkboxes?在带有复选框的功能之间切换?
【发布时间】:2023-03-29 12:34:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript html user-defined-functions


    【解决方案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
          }
      }
      

      【讨论】:

      • 很新鲜,你可能已经注意到了,呵呵,第二对括号不起作用,但更优雅的解决方案会更好,任何指针:)?
      • 更流畅了,我花了一些时间来解决它,但现在它可以正常工作了,谢谢:)!
      猜你喜欢
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多