我是否可以检查是否从按钮&x27;调用JavaScript函数;s onclick属性?
我有一个JavaScript函数,可以通过单击按钮或其他函数调用 我正在开发一个用香草JavaScript制作的简单游戏,我的功能如下:我是否可以检查是否从按钮&x27;调用JavaScript函数;s onclick属性?,javascript,Javascript,我有一个JavaScript函数,可以通过单击按钮或其他函数调用 我正在开发一个用香草JavaScript制作的简单游戏,我的功能如下: function end() { // End the game } 可通过单击按钮调用: <input type="submit" id="endBtn" value="End Game" onclick="end()"> 游戏可以通过用户单击按钮或满足pla
function end() {
// End the game
}
可通过单击按钮调用:
<input type="submit" id="endBtn" value="End Game" onclick="end()">
游戏可以通过用户单击按钮或满足play()函数中的某些条件来结束
是否可以知道该函数是否是通过单击按钮调用的?实际上可能存在一种解决方法。为函数指定ex$notifier的字符串参数。 从按钮调用时,请单击将$notifier参数指定为“按钮”或任何有意义的参数。 因此,通过检查参数值,您可以了解函数从何处启动
function myFunction(notifier){
if (notifier=='button'){
// triggered from button
}
else if(notifier=='function'){
// triggered from function
}
}
在按钮->onclick=“myFunction('button')”是的,可以评估它是否是通过单击按钮调用的,请参见以下内容:
btn=document.getElementById(“btn”);
testDiv=document.getElementById(“testDiv”);
btn.addEventListener(“单击”,()=>{
const payload=“从按钮调用”;
随机数fn(有效载荷);
});
函数randomFn(getInput){
testDiv.innerHTML=getInput;
}
点击
只需让函数接受类似“calledBy”的字符串,如:
在其他函数中传递“func”作为参数,而在按钮中传递“button”
在您的按钮中:
...onClick=myEvent('button')...
希望澄清一下,可能还有其他解决方案,但这是我想到的第一件事。实现这一点的一种方法是在函数中添加另一个参数,使您能够区分源代码。也就是说,如果你有一个函数
function abc(argument1) {
//logic
}
你可以加上
function abc(argument1, argument2){
if (argument2 === 'button' {
//some logic
}
//logic
}
如果您从按钮调用它,您可以使用
onClick:()=>abc(argument1,'button')
调用它,这样您就知道它来自按钮。如果在别处调用,您可以将参数provide从'button'
更改为您喜欢的任何形式。元素中的此
单击后将传递元素本身
所以你可以检查它是否是一个元素
功能测试(ele){
if(元素的元素实例){
log(“这是单击按钮调用”);
}否则{
log(“这是通过其他方式调用”);
}
}
test()代码>
ck me
由于默认情况下,从事件调用的函数会自动传递事件值,因此可以检查事件
值是否不等于未定义的
。代码示例:
函数yourFunction(事件=未定义){
if(事件和类型)(事件)=“对象”){
警报(“从元素调用”)
}否则{
警报(“未从元素调用”)
}
}
yourFunction()
点击我代码>我不太清楚你想做什么。但是,如果您确实必须记录/检查它是否是按钮单击或从其他函数调用的,则可以执行以下操作:
函数触发器FromFunction(d){
triggerClick(真);
}
函数触发器单击(comingFromFunction=false){
document.getElementById(“show”).innerHTML='来自函数='+来自函数;
}
触发点击
触发函数
您需要做的就是查看函数参数,特别是event.type
,所有事件都将传递它,如果它没有参数,则必须直接调用它(尽管如果需要,您可以传递类型)
const-button=document.getElementById(“按钮”);
const result=document.getElementById(“结果”);
按钮。添加EventListener(“单击”,该功能);
按钮。添加EventListener(“鼠标悬停”,该功能);
按钮。添加了监听器(“鼠标出”,该功能);
函数函数(e){
如果(e&&e.type)result.innerHTML='from'+e.type
else result.innerHTML='没有类型,可能是函数()
}
函数({type:'foo'})
点击
否决票不太可能基于所问的主题,而是基于所显示的假定缺乏努力。你有什么代码示例要展示吗?你已经做了哪些研究?很可能是通过引入一个额外的参数来实现的。如果它是通过点击按钮来调用的。它应该通过一个事件。您可以推断事件参数是否存在(即它不是未定义的),也可以检查事件的target属性以查看它是否是特定的dom元素。只需将函数包装到另一个函数中,并在两个位置之一调用它,可能会更容易、更健壮。@evolutionxbox我道歉。我真的认为没有必要为这样的问题提供代码示例。我把这个放在里面mind@MilkTable别担心。如果有疑问,请查看常见问题解答。你介意分享一个代码示例吗?显示比告诉好得多。当然我会编辑答案测试div在代码段中不可见output@evolutionxbox是的,没错,它是隐形的。单击按钮后,它将使用innerHTML进行更新。我明白了,所以这不是为了演示单击非按钮元素吗?如果我要问的问题看起来很愚蠢,我提前道歉。函数(e)
中的if语句是否检查事件是否存在?
...onClick=myEvent('button')...
function abc(argument1) {
//logic
}
function abc(argument1, argument2){
if (argument2 === 'button' {
//some logic
}
//logic
}