• 締切済み

checkboxを画像に置き換える方法

チェックボックスで、チェック前とチェック後の2つの画像を用意して、チェックボックスをその画像に置き換える方法を教えてください。

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

簡略版です。 <html> <head> <script type="text/javascript"> window.onload = function(){ img1 = 'off.gif', img2 = 'on.gif'; var i, e = document.getElementsByTagName('span'); for (i=0; i<e.length; i++) if (e[i].className=='toggleImage') e[i].onclick = setImage(); } function setImage() { var flg = false; return function() { flg = !flg; var img = this.getElementsByTagName('img'); if (img.length) img[0].src = flg?img2:img1; }; } </script> </head> <body> <span class="toggleImage"> <img src="off.gif" alt="">チェックボックス1 </span> <p> <span class="toggleImage"> <img src="off.gif" alt="">チェックボックス2 </span> <p> <span class="toggleImage"> <img src="off.gif" alt="">チェックボックス3 </span> </body> </html>

回答No.2

ていせいします。ちゃんと<span>をとじてなかった。 <p> <span class="checkbox"> <img src="chk0.gif" alt="チェック前"> <img src="chk1.gif" alt="チェック後" class="hide"> <input type="hidden" name="abc" value="off"> </span> Q1:どっち? </p> <p> <span class="checkbox"> <img src="chk0.gif" alt="チェック前"> <img src="chk1.gif" alt="チェック後" class="hide"> <input type="hidden" name="abc" value="off"> </span> Q2:どっち? </p>

回答No.1

ちょっと、じゅんじょのせいやくと、classをcheckboxにきめうちするのはまずいかなぁ? ばぶぅ~。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <title>test</title> <style type="text/css"> .hide { display:none; } </style> <p> <span class="checkbox"> <img src="chk0.gif" alt="チェック前"> <img src="chk1.gif" alt="チェック後" class="hide"> <input type="hidden" name="abc" value="off"> Q1:どっち? </p> <p> <span class="checkbox"> <img src="chk0.gif" alt="チェック前"> <img src="chk1.gif" alt="チェック後" class="hide"> <input type="hidden" name="abc" value="off"> Q2:どっち? </p> <script type="text/javascript"> //@cc_on document./*@if (@_jscript) attachEvent('on' + @else@*/ addEventListener(/*@end@*/  'click', function (evt) {    var e = evt./*@if (@_jscript) srcElement @else@*/ target /*@end@*/;    var p = getParent(e, 'className', 'checkbox');    var o;       if (p) {     o = p.getElementsByTagName('*');     if ('inline' === getCStyle(o[0], 'display')) {      o[0].style.display ='none';      o[1].style.display ='inline';      o[2].value = 'on';     } else {      o[0].style.display ='inline';      o[1].style.display ='none';      o[2].value = 'off';     }    }  }, false);   function getParent (node, type, val) {  return node ? (val == node[type]) ? node: arguments.callee(node.parentNode, type, val): null; } function getCStyle( e, s ) {  return e.nodeType == 1 ? /*@if(@_jscript) e.currentStyle[ s ] @else@*/ document.defaultView.getComputedStyle( e, null )[ s ] /*@end@*/ : null; } </script>

関連するQ&A

専門家に質問してみよう