
No.4ベストアンサー
- 回答日時:
画像ファイルを入れておく変数は、配列変数にした方がよろしいかと。
かつ、Imageオブジェクトにしておくとメモリ上に画像データが読み込まれますので瞬時に表示されます。(メモリを使うのでメモリリークに注意。)
また、HTML側でonclickとしないでスクリプトの中でやってしまった方が無難です。
--------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv='Content-Type' content='text/html; charset=Shift_JIS'>
<meta http-equiv='Content-Style-Type' content='text/css'>
<meta http-equiv='Content-Script-Type' content='text/javascript'>
<script type='text/javascript'>
//@cc_on
window./*@if (@_jscript) attachEvent( 'on'+ @else@*/addEventListener( /*@end@*/ 'load', function ()
{
var arrImgs = [], imgIdx = 0, imgLen, objBtn;
(arrImgs[0] = new Image()).src = 'images/A.jpg';
(arrImgs[1] = new Image()).src = 'images/B.jpg';
imgLen = arrImgs.length; // 毎回arrImgs.lengthを取得していると遅くなるので、最初に取得しておく。
objBtn = document.getElementById( 'id-btn' );
objBtn && objBtn./*@if (@_jscript) attachEvent( 'on'+ @else@*/addEventListener( /*@end@*/ 'click', function ()
{
// 毎回、button要素を取得しなおしている。
if( (objBtn = document.getElementById( 'id-btn' )) )
{
imgIdx = ( imgIdx + 1 ) % imgLen;
objBtn.style.backgroundImage = 'url(' + arrImgs[imgIdx].src + ')';
}
}, false );
}, false );
</script>
<style type='text/css'>
input#id-btn{
background-image : url(images/A.jpg);
}
</style>
</head>
<body>
<div>
<input type='button' id='id-btn' value='背景画像チェンジ'>
</div>
</body>
</html>
--------------------------------------------------------------
毎回、button要素を取得しなおしているのは、
万が一、他のスクリプトで(動的に)input要素が削除されたりした場合などを考慮してのこと。
input要素じゃなくても、その親要素に対してなんらかの操作がされる場合もあるかもしれない。
まぁ、そんなことないと思うけど…。
(あんまり、変数objBtnをイベントの中で使うのはしたくなかったが、しちゃった。あまり、よろしくない使い方かもしれません。)
ちなみに、ボタンの背景を変更する場合、IE7では上記のソースではうまくできなかった。
一応buttonタグならIE7でもできるみたいです。
buttonタグはオススメできないけど。
<input type='image'>は送信ボタン扱いっぽいし…。
--------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<script type='text/javascript'>
//@cc_on
window./*@if (@_jscript) attachEvent( 'on'+ @else@*/addEventListener( /*@end@*/ 'load', function ()
{
var arrImgs = [], imgIdx = 0, imgLen, objBtn;
(arrImgs[0] = new Image()).src = 'images/A.jpg';
(arrImgs[1] = new Image()).src = 'images/B.jpg';
imgLen = arrImgs.length; // 毎回arrImgs.lengthを取得していると遅くなるので、最初に取得しておく。
objBtn = document.getElementById( 'id-btn' );
objBtn && objBtn./*@if (@_jscript) attachEvent( 'on'+ @else@*/addEventListener( /*@end@*/ 'click', function ()
{
var cobj;
// 毎回、button要素を取得しなおしている。
if( (objBtn = document.getElementById( 'id-btn' )) )
{
if( !(cobj = objBtn.childNodes[0]) ) return; // div
if( !(cobj = cobj.childNodes[0]) ) return; // div
if( !(cobj = cobj.childNodes[0]) ) return; // img
imgIdx = ( imgIdx + 1 ) % imgLen;
cobj.src = arrImgs[imgIdx].src;
}
}, false );
}, false );
</script>
<style type='text/css'>
button#id-btn
{
width : 100px;
height : 20px;
}
button#id-btn div
{
position : relative;
width : 100px;
height : 20px;
cursor : default;
}
button#id-btn div div
{
position : absolute;
left : 0px;
top : 0px;
}
button#id-btn div div img
{
position : absolute;
left : 0px;
top : 0px;
width : 94px;
height : 14px;
}
</style>
</head>
<body>
<div>
<button id='id-btn'><div><div><img src='images/A.jpg'></div><div>画像チェンジ</div></div></button>
</div>
</body>
</html>
--------------------------------------------------------------
ちなみに、動作確認はしていないです。
個人的にはtype='image'もbuttonも一度も使ったことがない。
そもそもボタンに画像を使うより、
imgタグをボタン代わりとして使ったほうがいいのではないかと思う。
この方がどのブラウザでもできるはずだし。
No.3
- 回答日時:
こんにちは
こんなやつですか?
<script type="text/javascript"><!--
function imgch() {
i = document.getElementById("imagebutton").style.backgroundImage;
if(i == "url(○.gif)") Img = "url(×.gif)";
else Img = "url(○.gif)";
document.getElementById("imagebutton").style.backgroundImage = Img;
}
//--></script>
<input type="button" id="imagebutton" style="background-image:url(○.gif);" value="ボタン背景変更" onclick="imgch()">
style="background-image:url();" で背景画像指定
url()の()内には画像のアドレスが入ります(計4ヶ所)
画像を1回しか表示しないのであれば<input type=~の中の style=""の中に background-repeat:no-repeat; を追加
※Operaではできません(--;)
代替えとして背景画像の違うボタンを2つ用意して表示の有無を切り替えてやる方法
<script type="text/javascript"><!--
function imgch(m,n) {
m.style.display ="none";
document.getElementById(n).style.display = "block";
}
//--></script>
<input type="button" id="imagebutton0" style="background-image:url(○.gif);" value="ボタン背景変更" onclick="imgch(this,'imagebutton1')">
<input type="button" id="imagebutton1" style="background-image:url(×.gif);display:none;" value="ボタン背景変更" onclick="imgch(this,'imagebutton0')">
No.2
- 回答日時:
申し訳ありません。
ボタンですね。---------------------------------------------------------------
<html>
<head>
<title>画像の変更</title>
<script language="JavaScript" type="text/javascript">
<!--
var image1="img1.gif";
var image2="img2.gif";
var flag=0;
function changeImage() {
flag++;
flag %= 2;
if (flag==1) {
document.getElementById("imgA").src = image2;
} else {
document.getElementById("imgA").src = image1;
}
}
//-->
</script>
</head>
<body bgcolor="#ffffff">
<input type="button" value="画像の変更" onClick="changeImage()">
<hr />
<img src="img1.gif" id="imgA" border="0" alt="画像をクリックすると、画像が入れ替わります。">
<br>
</body>
</html>
---------------------------------------------------------------
No.1
- 回答日時:
画像が2つの場合の簡単な例を参考にしてみてください。
画像のファイル名を
img1.gif、img2.gif
とし、HTMLファイルと同じディレクトリにあるとします。
---------------------------------------------------------------
<html>
<head>
<title>画像の変更</title>
<script language="JavaScript" type="text/javascript">
<!--
var image1="img1.gif";
var image2="img2.gif";
function changeImage() {alert(1);
if (document.imgA.src==image1) {
document.imgA.src = image2;
} else {
document.imgA.src = image1;
}
}
//-->
</script>
</head>
<body bgcolor="#ffffff">
画像をクリックすると、画像が入れ替わります。
<hr />
<a href="JavaScript:changeImage()"><img src="img1.gif" name="imgA" border="0" alt="画像をクリックすると、画像が入れ替わります。"></a>
<br>
</body>
</html>
---------------------------------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) vba 同じブック内での転記について 4 2023/01/15 14:42
- ホームページ作成・プログラミング ウィンドウズ11にしたら背景画面が黒くなり直せません 1 2023/04/15 21:55
- その他(ソフトウェア) ペイントで切り抜いた画像の背景を透明に 2 2022/09/15 10:20
- その他(パソコン・スマホ・電化製品) アンドロイドスマホの画面にクリックするとJPG写真が開くショートカットを作りたいのですが、方法をおし 3 2023/08/27 10:01
- Photoshop(フォトショップ) フォトショップで切り抜いた画像を透明にするには 3 2022/09/15 11:50
- Photoshop(フォトショップ) フォトショップで次のような加工は可能でしょうか? 4 2022/05/14 13:54
- 恋愛占い・恋愛運 カテ違いだったらすいません。心理について聞きたいです! 2 2022/04/18 14:26
- Windows 10 zoomで自分の顔の背景 3 2023/06/07 22:34
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- Photoshop(フォトショップ) フォトショップで背景をくり抜く方法 2 2022/05/14 12:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jqueryを使用した画像スクロー...
-
このコードは問題ないでしょうか。
-
HTMLへ要素の挿入について
-
セレクトボックスで、リンクバ...
-
ツリー型の目次作成
-
IMGタグごとにCSSを設定する方法
-
lightboxのような効果
-
JavaScriptが、Firefoxで動かな...
-
jquery:animate中にイベントを付与
-
透過PNGをIE6へ、かつYoutubeの...
-
画像のフェードインについて・...
-
サイトに横スクロールのスライ...
-
javascript ランダム表示
-
lightbox風のモーダルウィンド...
-
JQueryでオープニングアニメー...
-
SeesaaブログにBlogPeople (...
-
VBAのことについて教えてくださ...
-
プルダウンメニュ 展開時にずら...
-
特定のものにだけスクリプトを...
-
contentflowとlightboxについて。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jQueryで同じクラス名のものを...
-
デフォルト非表示にしたい。【t...
-
スクリプト
-
jQueryで4枚の画像がフェードア...
-
交互に入れ替わる画像を複数配置
-
クリッカブルマップをロールオ...
-
bxsliderで最初に縦に複数表示...
-
複数bxsliderをタブで切り替え...
-
JavaScriptでの画像切り替えを...
-
「画像クリックで音声再生」を ...
-
画像切り替え
-
ボタンを押すたびに交互に切り...
-
jQuery 親要素の大きさに合わせ...
-
画像のフェードインについて・...
-
ボタンを画像に変更したい
-
画像のフェードイン・フェード...
-
アップロードファイルの種類に...
-
クリックでクリッカブルマップ...
-
Jquery cheeckbox(複数)とsli...
-
画像の切り替えについて
おすすめ情報