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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
チェックボックスのON / OFFで...
-
VideoBoxのカスタマイズ
-
「jQuery」アコーディオンメニ...
-
画像が表示でnull; this.src
-
textareaに画像を表示したい
-
MAX関数を使ってからLEFT JOIN...
-
HPで写真をクリックすると次の...
-
jQueryを使ってランダムに表示
-
iframe内のリンクが飛ばないの...
-
JAVAスクリプトについて
-
MFCで画像を表示させているので...
-
フッター上部に謎の隙間
-
jquery 3の倍数のliだけ色を変える
-
画像とコメントの同時表示をし...
-
dtで横並び
-
画像をクリックしたら別ウイン...
-
指定位置に要素を追加する
-
背景色を透明化
-
htmlの記述で link rel=styles...
-
スムーズスクロールとfleXcroll...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jQueryで同じクラス名のものを...
-
Colorboxがうまく設置できません
-
Javascript初心者|jQueryの.va...
-
jqueryで、後から追加した画像...
-
デフォルト非表示にしたい。【t...
-
bxsliderで最初に縦に複数表示...
-
交互に入れ替わる画像を複数配置
-
クリッカブルマップをロールオ...
-
背景色と連動するスライドショ...
-
JS:画像を繰り返しランダム読...
-
画像のサイズ
-
スクリプト
-
アップロードファイルの種類に...
-
クリックでクリッカブルマップ...
-
マウスオーバーにて画像に虫眼...
-
java スライド クリック メニ...
-
VBAでIEを動かす場合、下記の①...
-
JavaScriptでの画像切り替えを...
-
【jQuery】setInterval
-
IEの「explorercanvas」で作っ...
おすすめ情報