javascript更改被调用函数的名称
javascript change name of called function
大家好,我对javascript很陌生,所以请温柔一点。我把php和我的调用混合在一起,我有一个小问题。我需要更改在onclick事件中调用的函数名。
<div class='"span4'" id='"pass'">
<button class='"btn btn-block btn-large btn-warning'" id='"bypass'" disabled onclick='"pass(); return false;'">
-
</button>
</div>
上面是带有std调用的div。在此之前,一些变量是从另一个函数调用中设置的,我需要将上面的调用更改为"pinpass2()或pinpass3等
function pincheck(id,type,lastid,pin){
document.getElementById('fade').style.display='"block'";
document.getElementById('calc').style.display='"block'";
var staffid = id;
document.getElementById('bypass').onclick = function (){'"pinpass'"+staffid();
return false;
};
}
以上是应该做的功能,但我似乎无法让它工作。感谢您的帮助。p.s如果我在pincheck函数中包含以下内容,则所需的工作人员将被重新部署
alert('"staff id'"+staffid);
document.getElementById('bypass').onclick = pinpass2;
这应该很好用。pinpass2
已经是一个函数,您可以像其他任何对象一样将其分配给onclick
(是的,函数是Javascript中的对象)。所以只要在需要的时候更换onclick
。
如果您无法检测到staffid()
结果的更改,则应使用开关。
document.getElementById('bypass').onclick = function() {
switch(staffid()) {
case 1: pinpass(); break;
case 2: pinpass2(); break;
default: pinpass3(); break;
}
};
尽管大多数时候你不必这么做。此外,我不确定staffid应该是一个函数还是一个变量,但它不会改变任何东西。
顺便说一句,这种附加处理程序的方式已经很老了。还有一个更强大的:
document.getElementById('bypass').addEventListener('click', pinpass2, false);
有了它,您可以附加多个函数。删除一个:
document.getElementById('bypass').removeEventListener('click', pinpass2, false);
您可以像更改任何属性一样更改onclick属性吗?
var elem = document.getElementById('bypass');
elem.setAttribute('onclick', 'pinpass' + staffid + '(); return false;');
FIDDLE
在javascript中,函数是第一类,因此您可以直接将pincheck
分配给其他类似的变量。
var pinpass2 = pincheck;
现在你仍然可以这样称呼它
pinpass(1,2,3,4);
我不是100%理解你的问题,但看起来你正试图基于staffid变量调用一个不同的函数。也就是说,如果是2
,您要调用pinpass2()
。
如果这是一个全局函数,你可以调用window[ 'pinpass' + staffid ]()
,它会调用你想要的函数(如果它存在的话)。
示例:如果staffid = 2
,则window[ 'pinpass' + staffid ]()
等于window[ 'pinpass2' ]()
,这与调用pinpass2()
相同。
这是因为所有全局变量(包括函数)都是window
对象的属性,并且可以使用动态生成的名称和方括号表示法访问属性。
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 如何在Javascript函数调用中循环变量
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何远程检查JavaScript应用程序的函数调用堆栈
- javascript函数调用不起作用
- 为什么这个函数调用会破坏程序并导致未定义的变量
- 如何通过函数调用设置图像的src
- 从全局函数调用Ember控制器上的方法
- 为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功
- JavaScript函数调用(arg1)(arg2)
- 打印链接时,将javascript函数调用到链接中
- 在函数调用中封装数据除了隐藏数据之外还有什么优点
- 无法从JavaScript中的函数调用对象属性
- 对中的函数调用进行排序是回调的唯一方法
- 函数调用方法有什么用
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- HTML5(Bootstrap)通过函数调用运行动画
- 函数调用不起作用
- 函数中的Javascript函数调用