2013-09-25 96 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');"/> 
相關問題