如何在 switch 语句中添加执行自定义函数
How to add execute custom function in switch statement
我正在尝试根据传递给下面函数的参数执行 switch 语句,并尝试根据传递的参数执行不同的函数。但是当我在第三种情况下尝试一个函数时,我在 .js 文件的开头得到了 Uncaught ReferenceError: of another function,如下所示。
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 Fiddle - http://jsfiddle.net/ck221xxk/
注意 - 我在单击不同的按钮时执行此功能。在我尝试执行另一个功能的第三种情况下,我正在更改按钮的 class。
只需删除函数语句,不需要它,或者只需调用您自己的函数语句...
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 语句中的
:
并不像在 对象字面量 [=42= 中那样表示 =
]. (我自己没有首先注意到这一点,所以感谢@WhiteHat)。
this
在函数之间更改值。 this
在你的 外部函数中 可能意味着 "the current HTML-node" 但在匿名函数内部,它很可能指的是 window
除非定义了不同的东西。
- 像这样定义内联函数是一个语法错误。
你可以当然有内嵌函数;但你需要将它括在方括号 ()
中,并用 ()
call()
, apply()
或类似的方式调用它。
我将使用 call()
since the first argument specified in call()
是 this
参数,这意味着我可以在两种情况下保留 this
"the same"。
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;
}
}
}
但是,除非您非常需要一个新的命名空间,否则我看不出有任何理由这样做,任何其他答案都可能就足够了。
您可以在该案例中调用您的下一个函数
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':
doStuff(identifier);
break;
}
};
function doStuff(identifier){
// execute other code here
};
我正在尝试根据传递给下面函数的参数执行 switch 语句,并尝试根据传递的参数执行不同的函数。但是当我在第三种情况下尝试一个函数时,我在 .js 文件的开头得到了 Uncaught ReferenceError: of another function,如下所示。
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 Fiddle - http://jsfiddle.net/ck221xxk/
注意 - 我在单击不同的按钮时执行此功能。在我尝试执行另一个功能的第三种情况下,我正在更改按钮的 class。
只需删除函数语句,不需要它,或者只需调用您自己的函数语句...
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 语句中的
:
并不像在 对象字面量 [=42= 中那样表示=
]. (我自己没有首先注意到这一点,所以感谢@WhiteHat)。 this
在函数之间更改值。this
在你的 外部函数中 可能意味着 "the current HTML-node" 但在匿名函数内部,它很可能指的是window
除非定义了不同的东西。- 像这样定义内联函数是一个语法错误。
你可以当然有内嵌函数;但你需要将它括在方括号 ()
中,并用 ()
call()
, apply()
或类似的方式调用它。
我将使用 call()
since the first argument specified in call()
是 this
参数,这意味着我可以在两种情况下保留 this
"the same"。
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;
}
}
}
但是,除非您非常需要一个新的命名空间,否则我看不出有任何理由这样做,任何其他答案都可能就足够了。
您可以在该案例中调用您的下一个函数
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':
doStuff(identifier);
break;
}
};
function doStuff(identifier){
// execute other code here
};