2016-10-22 49 views
1

我有這樣的代碼:我點擊一個輸入收音機,並通過再次點擊更改圖像src ...我如何改變圖像回來它是如何?

https://jsfiddle.net/Suiberu/rxu8wgxf/

//INPUT RADIO ON & OFF 
var prv; 
var markIt = function(e) { 
    if (prv === this && this.checked) { 
    this.checked = false; 
    prv = null; 
    } else { 
    prv = this; 
    } 
}; 

$(function() { 
    $('input.limit_radio').on('click', markIt); 
}); 


//CHANGE IMAGE 
function changeImage(imgName) { 
    image = document.getElementById('theimage'); 
    image.src = imgName; 
} 

點擊輸入型無線電..和是的,它必須是一個輸入型收音機, 我不設法改變IMG SRC。 感謝一些jQuery代碼,我可以設法關閉輸入收音機。但改變後的圖像仍然保持原來的狀態。 因此,當我關閉輸入類型收音機我想回到原來的img src。 我該如何做到這一點?

對不起,但JavaScript或jQuery不是我最強的技能,但你可以驗證我要求什麼,只是檢查上面的網址。

謝謝!

+0

檢查現在https://jsfiddle.net/rxu8wgxf/1/ –

回答

2

我刪除了onclick處理程序,並添加了一個數據屬性來換出網址。

https://jsfiddle.net/jjwilly16/37yn9xzy/1/

<img src="http://www.cbc.ca/i/img/theme/default/plus-up.png" name="theimage" id="theimage" data-alternate="https://www.ucl.ac.uk/2034/images/icons/arrow-blue-left.png"/> 


/INPUT RADIO ON & OFF 
var prv; 
var markIt = function(e) { 
    if (prv === this && this.checked) { 
    this.checked = false; 
    prv = null; 
    } else { 
    prv = this; 
    } 
    var img = document.getElementById('theimage'), 
     alternate = img.getAttribute('data-alternate'), 
     src = img.src; 
    img.src = alternate; 
    img.setAttribute('data-alternate', src); 

}; 

$(function() { 
    $('input.limit_radio').on('click', markIt); 
}); 
+0

好,這是一個很好的答案,謝謝。 但我忘了提供更多關於我的問題的細節,我的錯。 你可以檢查這個新的例子嗎?你會明白我的懷疑。 而不是一個輸入類型的收音機,我有兩個。 開始時圖像有一個問號。 – NotRocketScientist

+0

對不起,https://jsfiddle.net/Suiberu/v6xja0yd/這是代碼。正如你所看到的,在開始時圖像有一個問號。因此當您單擊第一個輸入時,圖像會發生變化,如果您單擊第二個輸入,則圖像會再次發生變化,但無論您是否關閉輸入,圖像都將保持爲所選最後一個圖像。如何通過關閉任何輸入收音機回到原始問號? 謝謝! – NotRocketScientist

+0

好的,檢查一下:https://jsfiddle.net/jjwilly16/2L3pnhfj/。我基本上只是檢查了點擊是否檢查了收音機,並且如果它沒有放回問號。 – jjwilly16

1

您可以使用mouseup事件,刪除和替換原來的<input type="radio">元素。

$(function() { 
 
    var sources = ["https://www.ucl.ac.uk/2034/images/icons/arrow-blue-left.png" 
 
       , "http://www.cbc.ca/i/img/theme/default/plus-up.png"]; 
 

 
    var img = $("#theimage"); 
 

 
    var clicked = false; 
 

 
    function changeImage(e) { 
 
    
 
    img.attr("src", function() { 
 
     var checked = e.target.checked; 
 
     if (!clicked || checked) { 
 
     var clone = e.target.outerHTML; 
 
     $(e.target).remove(); 
 
     $(clone).insertAfter($("#theimage + br")); 
 
     $(".limit_radio").prop("checked", !clicked ? true : !checked); 
 
     } 
 
     return (!clicked ? (clicked = true) : !checked) ? sources[0] : sources[1] 
 
    }); 
 
    } 
 

 
    $(document).on("mouseup", "input.limit_radio", changeImage) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> 
 
</script> 
 
<img src="http://www.cbc.ca/i/img/theme/default/plus-up.png" name="theimage" id="theimage" /> 
 
<br> 
 
<input class="limit_radio" type="radio" name="edit_race" value="gnomin" id="race_gnomin">

的jsfiddle https://jsfiddle.net/rxu8wgxf/5/

+0

不,對不起,正如我說得很清楚,它不能是一個複選框,它必須是一個輸入類型的收音機。 你可以檢查這段代碼嗎? https://jsfiddle.net/Suiberu/v6xja0yd/正如我上面解釋,現在這個問題有兩個輸入類型的收音機(或更多)我懷疑是...我如何回到原來的「問號」圖像? – NotRocketScientist

相關問題