我正在开发一个HTML5 / JavaScript应用程序。
我有一个名为letter(x)
的函数,它有一个参数,我想一次从两个不同的地方调用它。这可能吗?
我从HTML中调用它,其中我有两个带onclick
函数的图像按钮。当我逐个点击两个图像时,它应该通过并给出结果
我的代码如下: JavaScript中的函数代码
function letter(x) {
if (x==1&&a) {
document.getElementById('audio2').play();
document.getElementById('ka').style.visibility = "true"
}
}
我调用的HTML代码
<img src="images/mei/off/01.png" id="ik" onclick="letter(1);"/>
<img src="images/uyir/off/01.png" id="ah" onclick="letter(a);"/>
在上面我尝试同时传递两个函数参数时,我无法传递给它。可能吗?如果有可能,怎么办呢?
答案 0 :(得分:1)
你不能做你想要达到的目标。单击第一个按钮调用该函数时,将使用“1”参数执行该函数,条件将为false。与第二个按钮和参数'a'相同。我会做这样的事情:
var lastCallParameter = '';
function letter(x)
{
if((lastCallParameter == '1' && x == 'a') || (lastCallParameter == 'a' && x == '1'))
{
document.getElementById('audio2').play();
document.getElementById('ka').style.visibility = "true"
}
lastCallParameter = x;
}
在该代码上,仅当您依次单击2个按钮时才会执行功能核心。如果只点击一个按钮,则不会执行任何操作。
你的html代码应该是:
<img src="images/mei/off/01.png" id="ik" onclick="letter(1);"/>
<img src="images/uyir/off/01.png" id="ah" onclick="letter('a');"/>
除非你的代码中有某个名为'a'的变量。在这种情况下,您应该删除围绕'a'的简单引号。在你的代码中,我无法理解'a'是否是在其他地方定义的字符或变量。
请注意,为避免使用全局变量(这是一件坏事),您可以这样做:
var letter = (function(){
var lastCallParameter = '';
return function(x)
{
if((lastCallParameter == '1' && x == 'a') || (lastCallParameter == 'a' && x == '1'))
{
document.getElementById('audio2').play();
document.getElementById('ka').style.visibility = "true"
}
lastCallParameter = x;
}
})();
但它需要您了解关闭和范围才能理解该代码。如果不这样做,则可以使用第一个版本。
答案 1 :(得分:0)
您的功能是检查x
是否等于数字1,a
是否真实,但该范围内没有a
。也许您想知道x
是数字1 还是字母a?
function letter(x) {
if (x == 1 || x == 'a') {
document.getElementById('audio2').play();
document.getElementById('ka').style.visibility = "true"
}
}
如果你想知道x
是1并且a
是真的,你需要在你的args中提供它:
function letter(x, a) {
if (x == 1 && a) {
document.getElementById('audio2').play();
document.getElementById('ka').style.visibility = "true"
}
}
<img src="images/mei/off/01.png" id="ik" onclick="letter(1, true);"/>
<img src="images/uyir/off/01.png" id="ah" onclick="letter(1, 'still true');"/>