2013-09-25 94 views
1

我正在开发一个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);"/> 

在上面当我试图同时传递两个函数参数时,我无法传递给它。可能吗?如果可能的话,该怎么办?

+2

是的,它是可能的。但是是否定义了变量'a'?这可能是错误的根源。 – Adam

+0

什么是'a'?它是一个变量还是应该被引号括起来(如此一个char)? –

+0

为什么不叫'letter(1,a)'并确保声明'var a;'。 –

回答

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; 
    } 
})(); 

但它需要你了解封锁和范围理解的代码。如果你不这样做,你可以使用第一个版本。

0

您的功能是检查x是否等于数字1,而a是truthy,但在该范围内没有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是truthy,你需要在你的参数传递给它提供:

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');"/> 
相关问题