Php 如何制作HTML按钮’;s onclick事件随机触发两个不同函数中的一个?
如何使HTML按钮的Php 如何制作HTML按钮’;s onclick事件随机触发两个不同函数中的一个?,php,jquery,html,button,random,Php,Jquery,Html,Button,Random,如何使HTML按钮的onclick事件随机触发两个不同函数之一 我在服务器上使用PHP,在客户端使用jQuery。 使用此代码时,我点击按钮图像什么都没有发生 function a(){ alert('A got called!'); } function b(){ alert('B got called!'); } $('#button').bind('click', function(){ var rnd = Math.floor(Math.r
onclick
事件随机触发两个不同函数之一
我在服务器上使用PHP,在客户端使用jQuery。
使用此代码时,我点击按钮图像什么都没有发生
function a(){
alert('A got called!');
}
function b(){
alert('B got called!');
}
$('#button').bind('click', function(){
var rnd = Math.floor(Math.random() * 2);
if(rnd)
a();
else
b();
});
< "base_url().'images/free.png';" rel="nofollow" border='0' align='center' alt="FREE" id="button" />
附加一个事件处理程序,并让单个处理程序决定随机执行的操作
例如,在C#中,您可以执行以下操作:
private readonly Random rng = new Random();
...
button.Click += TakeRandomAction;
...
private static void TakeRandomAction(object sender, EventArgs e)
{
if (rng.Next(2) == 0)
{
GiveUserPony();
}
else
{
NukePlanetFromOrbit(); // It's the only way to be sure
}
}
jQuery/JavaScript中的细节可能会有所不同,但基本上您仍然需要调用一个函数,然后确定要做什么。假设您有如下代码:
$('button').bind('click', function(){
var rnd = Math.floor(Math.random() * 2);
if(rnd)
AnswerForEverthing();
else
WhatAmountOfWoodWouldAWouldchuckChuck();
});
$('#button').click(function() {
// handler 1 code
});
$('#button').click(function() {
// handler 2 code
});
您可以将其更改为:
$('#button').click(function() {
if(Math.random() < 0.5) {
// handler 1 code
} else {
// handler 2 code
}
});
$(“#按钮”)。单击(函数(){
if(Math.random()<0.5){
//处理程序1代码
}否则{
//处理程序2代码
}
});
正如Jon所说,将一个函数附加到按钮的onclick
事件,然后让该函数随机调用两个函数中的一个
在jQuery中,您可以这样做:
function a(){
alert('A got called!');
}
function b(){
alert('B got called!');
}
$('#your_buttons_id_attribute').click(
function(){
var functions = [a,b];
var index_of_function_to_call = Math.round(Math.random());
functions[index_of_function_to_call]();
}
);
还没测试过,希望能用。工作原理:randomFunction
返回一个函数,该函数本身随机调用randomFunction
的一个参数
显然,只有当您有多个事件时,这种方法才有意义,因为您需要一个随机函数来响应它们。如果只是这一个事件,那么使用上面的一个版本会更简单。如果您想要切换功能,请获取文本并根据该调用特定的函数。@Gert G的可能重复:这与OP的问题无关。这实际上是您的代码吗?因为这在我见过的任何网络浏览器中都不会产生按钮。您的HTML标记没有名称。你能在浏览器中查看源代码并向我们展示其中的代码吗?嗯,你有我可以探究的示例吗?编辑:好的,我刚刚看到了。关于PHP的一些东西?@JEagle:哪一点给你带来了困难?你知道如何生成一个随机数吗?你知道如何从一个函数调用另一个函数吗?@jonskeet。我有两个onclick独立工作。我担心的是如何将它们添加到同一个按钮。@JEagle:仔细阅读Jon的回答:附加一个事件处理程序,并让单个处理程序随机决定要做什么。@jAndy:当我回答问题时,没有任何迹象表明涉及到什么平台。然而,我保留了添加标签后的答案,因为无论平台如何,方法都是一样的。我在这里提出质疑(可能只是误解了代码,现在还早),但在25%的时间里,调用
回答,和WhatamountofWoodwouldChuck
75%的时间?换句话说,它并不像可能的那么随机。@Paul D.Waite:不,如果将Math.random()
的结果乘以3
@jAndy:Ah,就会发生这种行为!是的,对不起,Math.floor,明白了。我一直在尝试几个代码示例,但当我删除onclick并改为使用id=“button”时,我无法让它继续工作…@jAndy,好的,它可以工作了。现在我该如何使用这一行:“rel=”nofollow“border='0'align='center'alt=“FREE”/>。我试图将id=“button”放在那里,但它不起作用……如果您要处理数组,那么可能应该使用Math.round(Math.random()*functions.length)
@sje397:哦,是的,那会更好。我认为你需要Math.floor而不是Math.round(见下面詹迪的答案)。我更喜欢你的方法,因为它更简单。
function randomFunction() {
var args = arguments;
return function() {
args[Math.floor(Math.random()*args.length)]();
};
}
$('#id').click(randomFunction(functionOne, functionTwo));