2013-08-22 25 views
-1

對不起,大家好,我有一個問題。爲什麼功能沒有響應?onClick不響應hide()和show()函數

我的html:

<img id="btn" src="img/button.png" onclick="show()"></img> 
... 
<img id="xxx" src=""></img> 

我的腳本:

function show(){ 
    document.getElementById("xxx").src = "img/src.png"; 
    document.getElementById("btn").onclick = "hide()"; 
} 
function hide(){ 
    document.getElementById("xxx").src = ""; 
    document.getElementById("btn").onclick = "show()"; 
} 

,如果我按一下按鈕,只有第一個函數[function show()]這回應。請幫忙。謝謝。

回答

-1

只是使用這一行: document.getElementById(「btn」)。onclick = hide;

做到與jQuery,而不是JavaScript中,第一添加類「秀」給您的BTN:

$('.show').click(function(){$('#xxx').attr('src','img/src.png');$(this).addClass=('hide');$(this).removeClass('show')}); 
$('.hide').click(function(){$('#xxx').attr('src','');$(this).addClass=('show');$(this).removeClass('hide')}) 
+2

1.沒有jQuery標籤意味着沒有jQuery的答案。 2.你的jQuery代碼是錯誤的,並且對選擇器和直接事件的工作原理缺乏瞭解。 3.格式化! –

+0

@Shirin謝謝你的回覆,但是像Anthony說的,沒有jQuery – nathoenk

+0

抱歉格式化,我在這裏是新的,但正如你可以看到第一次我告訴你如何修復你的代碼,然後我添加jQery代碼, –

0

您應該直接通過參考功能。不是該函數的名稱。

function show(){ 
    document.getElementById("xxx").src = "img/src.png"; 
    document.getElementById("btn").onclick = hide; 
} 

function hide(){ 
    document.getElementById("xxx").src = ""; 
    document.getElementById("btn").onclick = show; 
} 
1

這不是每次更改onclick處理程序的最佳解決方案。 讓你的點擊處理代碼是在一個地方:

HTML:

<img id="btn" src="img/button.png" onclick="clickHandler()"></img> 

<img id="xxx" src=""></img> 

和Javascript:

function clickHandler() { 
    var img = document.getElementById("xxx"); 
    img.src = !img.src ? "img/src.png" : ""; 
} 

UPDATE:(在回答@nathoenk的評論)無論如何,你不能在每個用戶單擊時交換事件處理程序。例如,您可以創建全局變量來保存「顯示/隱藏」邏輯的當前狀態。

var imagesAreHidden = true; 
function clickHandler() { 
    if (imagesAreHidden) { 
    // do "show" logic 
    document.getElementById("xxx1").src = "img/src1.png"; 
    document.getElementById("xxx2").src = "img/src2.png"; 
    document.getElementById("xxx3").src = "img/src3.png"; 
    } else { 
    // hide" 
    document.getElementById("xxx1").src = ""; 
    document.getElementById("xxx2").src = ""; 
    document.getElementById("xxx3").src = "";   
    } 
    imagesAreHidden = !imagesAreHidden; 
} 
+0

感謝你的迴應,但我的真實代碼是 'function show(){ document.getElementById(「xxx1」)。src =「img/src1.png」; document.getElementById(「xxx2」)。src =「img/src2.png」; document.getElementById(「xxx3」)。src =「img/src3.png」; ... document.getElementById(「btn」)。onclick =「hide()」; }' – nathoenk

+0

我更新了答案 – ataman