我试图根据传递给下面函数的参数执行switch语句,并尝试根据传递的参数执行不同的函数。但是当我在第三种情况下尝试了一个函数时,我得到了Unjaught ReferenceError:.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小提琴 - http://jsfiddle.net/ck221xxk/
注意 - 单击不同的按钮时,我正在执行此功能。我正在尝试执行另一个函数的第三种情况下更改按钮的类。
答案 0 :(得分:2)
只需删除函数语句,不需要它,或者只需调用自己的函数,如下所示......
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
}
答案 1 :(得分:2)
您的代码存在一些问题。
:
并不像 object literal 那样意味着=
。 (我自己没先注意到这一点,所以感谢@WhiteHat)。 this
从函数到函数更改值。 外部函数中的this
可能意味着“当前的HTML节点”,但在匿名函数内部,除非定义了不同的内容,否则它很可能会引用window
。你可以当然具有在线功能;但您需要将其包含在括号()
中,并使用()
call()
,apply()
或类似名称进行调用。
我将使用call()
,因为call()
中指定的第一个参数是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;
}
}
}
但是,除非你严重需要新的命名空间,否则我认为没有任何理由这样做,任何其他答案都可能就足够了。
答案 2 :(得分:1)
您可以在该案例中调用您的下一个函数
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
};