Javascript 如何在switch语句中添加execute自定义函数

Javascript 如何在switch语句中添加execute自定义函数,javascript,jquery,switch-statement,addclass,Javascript,Jquery,Switch Statement,Addclass,我试图根据传递给下面函数的参数执行switch语句,并尝试根据传递的参数执行不同的函数。但是当我在第三种情况下尝试一个函数时,我在.js文件的开头得到了另一个函数的未捕获引用错误,如下所示 function getjobCon(reqType){ var identifier= $( "#single" ).val(); switch (reqType) { case 'job':

我试图根据传递给下面函数的参数执行switch语句,并尝试根据传递的参数执行不同的函数。但是当我在第三种情况下尝试一个函数时,我在.js文件的开头得到了另一个函数的未捕获引用错误,如下所示

function getjobCon(reqType){

       var identifier= $( "#single" ).val();

          switch (reqType) { 
                            case 'job': 
                                alert('you clicked job');
                                break;
                            case 'title': 
                                alert('you clicked title');
                                break;
                            case 'designation': function(identifier){
                                 $(this).addClass('slate');

                            }                                   
                                break;      

                            }
                    }
有人能告诉我怎么做吗?。我试了很多,但都没能改正

JS小提琴-


注意-单击不同的按钮时,我正在执行此功能。在第三种情况下,我正在更改按钮的类,在第三种情况下,我正在尝试执行另一个函数。

只需删除函数语句,不需要它,或者只需调用您自己的,如图所示

function getjobCon(reqType){
   var identifier= $( "#single" ).val();

      switch (reqType) { 
                        case 'job': 
                            alert('you clicked job');
                            break;
                        case 'title': 
                            alert('you clicked title');
                            break;
                        case 'designation': 
                            customFunc(identifier);
                            break;      
                        }
                }

function customFunc(identifier) {
  // put code here
}

只需删除函数语句,不需要它,或者只需调用您自己的函数语句,如图所示

function getjobCon(reqType){
   var identifier= $( "#single" ).val();

      switch (reqType) { 
                        case 'job': 
                            alert('you clicked job');
                            break;
                        case 'title': 
                            alert('you clicked title');
                            break;
                        case 'designation': 
                            customFunc(identifier);
                            break;      
                        }
                }

function customFunc(identifier) {
  // put code here
}

您的代码存在一些问题

  • 未调用您指定的函数(switch语句未调用它)。switch语句只是JavaScript中的一个构造,switch语句中的
    与对象文本中的
    =
    不同。(我自己先没注意到,所以谢谢@WhiteHat)
  • 将值从一个函数更改为另一个函数
    在外部函数中可能表示“当前HTML节点”,但在匿名函数中,除非定义了不同的内容,否则它很可能指的是
    窗口
  • 这样定义内嵌函数是一个语法错误
  • 当然,您可以在线使用函数;但是您需要将它括在括号中,并用
    ()
    或类似的名称来称呼它

    我将使用,因为中指定的第一个参数是
    this
    -参数,这意味着我可以在两种上下文中使
    this
    保持“相同”

    function getjobCon(reqType) {
    
      var identifier= $( "#single" ).val();
    
      switch (reqType) { 
          case 'job': 
              alert('you clicked job');
              break;
          case 'title': 
              alert('you clicked title');
              break;
          case 'designation': 
              (function(identifier){
    
               $(this).addClass('slate');
    
              }).call(this, identifier);                                   
              break;      
          }
       }
    }
    

    但是,除非您迫切需要一个新的名称空间,否则我看不出有任何理由这样做,其他任何答案都可能足够。

    您的代码存在一些问题

  • 未调用您指定的函数(switch语句未调用它)。switch语句只是JavaScript中的一个构造,switch语句中的
    与对象文本中的
    =
    不同。(我自己先没注意到,所以谢谢@WhiteHat)
  • 将值从一个函数更改为另一个函数
    在外部函数中可能表示“当前HTML节点”,但在匿名函数中,除非定义了不同的内容,否则它很可能指的是
    窗口
  • 这样定义内嵌函数是一个语法错误
  • 当然,您可以在线使用函数;但是您需要将它括在括号中,并用
    ()
    或类似的名称来称呼它

    我将使用,因为中指定的第一个参数是
    this
    -参数,这意味着我可以在两种上下文中使
    this
    保持“相同”

    function getjobCon(reqType) {
    
      var identifier= $( "#single" ).val();
    
      switch (reqType) { 
          case 'job': 
              alert('you clicked job');
              break;
          case 'title': 
              alert('you clicked title');
              break;
          case 'designation': 
              (function(identifier){
    
               $(this).addClass('slate');
    
              }).call(this, identifier);                                   
              break;      
          }
       }
    }
    

    但是,除非您迫切需要一个新的名称空间,否则我看不出有任何理由这样做,其他任何答案都可能足够。

    您可以在这种情况下调用下一个函数

    函数getjobCon(reqType){ 变量标识符=$(“#单个”).val(); 开关(REQ型){ “工作”案例: 警报(“您单击了作业”); 打破 “标题”一案: 警报(“您单击了标题”); 打破 “指定”案例: doStuff(标识符); 打破 } }; 函数doStuff(标识符){ //在这里执行其他代码
    };您可以在该案例中调用下一个函数

    函数getjobCon(reqType){ 变量标识符=$(“#单个”).val(); 开关(REQ型){ “工作”案例: 警报(“您单击了作业”); 打破 “标题”一案: 警报(“您单击了标题”); 打破 “指定”案例: doStuff(标识符); 打破 } }; 函数doStuff(标识符){ //在这里执行其他代码

    };小提琴或钢笔可能有用我将添加小提琴。谢谢,补充说。如果我命名这个函数或者声明另一个函数,它就会工作。但我不想说出它的名字。我无法理解为什么有人想要在匿名函数中包装一行(多行)代码。只需将代码放入case语句中。除非你只是想让它难以阅读。我将在函数中用变量进行ajax调用。可以代替函数启动ajax调用吗?小提琴或钢笔可能会有帮助我将添加小提琴。谢谢,补充说。如果我命名这个函数或者声明另一个函数,它就会工作。但我不想说出它的名字。我无法理解为什么有人想要在匿名函数中包装一行(多行)代码。只需将代码放入case语句中。除非你只是想让它难以阅读。我将在函数中用变量进行ajax调用。可以代替函数启动ajax调用吗?谢谢您的回复。我不只是想添加类。我将在函数中添加更多功能。因此需要自定义函数。您可以简单地执行另一个函数,然后查看我的答案@bigbt@WhiteHat添加的修订版应该可以解决您的问题。谢谢您的回复。我不只是想添加类。我将在函数中添加更多功能。因此需要自定义函数。您可以简单地执行另一个函数,然后查看我的答案@bigbt@WhiteHat添加的修订版应该可以解决您的问题。在switch语句中定义这样一个未调用的匿名函数是毫无意义的。修复后,我认为OP没有包含完整的示例。不,不是。我还以为是在它前面的回信呢。我累了。谢谢大家的回答。我知道我是给函数命名还是单独编写可以工作。但我想知道我是否可以不做就申报。我将接受其中一个想法。对不起,我不清楚。再次感谢您的时间。谢谢您的一个bunh@whitehat。