onclickで呼び出す関数の引数を・・・

このQ&Aのポイント
  • AJAXで画像ファイル名を取得して、クリックした画像に応じて引数が変わらない問題の解決方法をお教えください。
  • prototype.jsを使用して、onclickで呼び出す関数の引数が常に最大値4になる問題が発生しています。
  • 画像をクリックした時に引数が変わらず、常に4になってしまう問題の解決方法を教えてください。
回答を見る
  • ベストアンサー

onclickで呼び出す関数の引数を・・・

質問させていただきます。 prototype.jsを使って, function hoge(){  AJAXで画像ファイル名img_name[i]を取得、 取得画像が無ければimg_name[i]はnull; for(i=1;i<5;i++){ if(img_name[i]){ $("img_"+i).onclick=function(){sample(i)}; $("img_"+i).src=img_name[i]; }else{ $("img_"+i).onclick=null; $("img_"+i).src="no_img.gif"; } } } function sample(row){ 略; } という関数を作り、 htmlに <img id="img_1" src="aa.gif" onclick=""> <img id="img_2" src="bb.gif" onclick=""> というAJAXの結果で画像リストが変化し、画像がクリックできる プログラムを作りました。 しかしsampleに入ってくる引数が、どの画像をクリックしても iの最大値4になってしまいます。 予定ではクリックした画像によって引数が変わるはずなのですが・・・ どなたかご教授できる方宜しくお願い致します。

  • purry
  • お礼率68% (24/35)

質問者が選んだベストアンサー

  • ベストアンサー
  • arexis
  • ベストアンサー率66% (66/99)
回答No.1

$("img_"+i).onclick=function(){sample(i)};の所でsample(i)にしてるからですね。 $("img_"+i).num = i; $("img_"+i).onclick=function(){ sample(this.num) }; こすうるか、 $("img_"+i).num = i; $("img_"+i).onclick=sample; function sample(){ var row = this.num; //宣言しなくてもthis.numで。 } こうするか $("img_"+i).num = i; $("img_"+i).onclick= function(){ var row = this.num; //宣言しなくてもthis.numで。 }

purry
質問者

お礼

動きました!ありがとうございます!

関連するQ&A

  • JavaScriptでエレメントのIDを取得

    JavaScriptで、エレメントのIDを取得する方法がわからず困っています。 [画像]ここをクリック [画像]ここをクリック 上記が画面配置のイメージなのですが、「ここをクリック」の文字をクリックした時に、そのクリックされた<a>タグのIDを取得したいのです。 以下が試行錯誤したソースの一部です。 [html] <img src="./test_01.gif" name="testImg01"> <a href="javascript" id="test_01" onclick="getID(this);">ここをクリック</> <img src="./test_02.gif" name="testImg02"> <a href="javascript" id="test_02" onclick="getID(this);">ここをクリック</a> [JavaScript] function getID(element) { var id = document.getElementById(id); alert(id); } 上記コードで得られたのは「null」という値でした。 色々検索してはいるのですが、思うように値を取得できません。 どうか知恵をお貸しください。

  • onclick="" の""を変えることができるでしょうか。

    お世話になります。 <img src="hoge.gif" id="movImgID1" onclick="GoMoveImg(1,-1)"> で、hoge.gifをクリックすると、この画像が移動するようにしました。 例えば(100,100)->(200,200) に移動します。 この(200,200)へ移動が完了したとき、 onclick="GoMoveImg(1,0)" などというように、onclickで指定する関数を変えることはできないものでしょうか。 移動が完了した時点は、スクリプト上でとらえています。 alert("移動完了"); で、その時点を確認しています。 なにとぞよろしくお願いいたします。

  • 関数内でonclickをさせたい

    以下に示すような動作をさせたいのですが、手段はあるでしょうか? ご教示の方よろしくお願いいたします。 <html> <head> <script type="text/javascript"> function test1(){ ここでtest2というリンクをクリックしたことにしたい。 document.getElementById("test2").onclickとか勘でやってみたけどダメでした。 } </script> </head> <body> <img src="hoge.jpg" name="test1" onclick="test1();"> <a href="hoge.html" id="test2">test2</a> </body> </html>

  • onclickで画像と文字を別々の場所に表示したいのですが...

    onclickで小さい画像を別の場所に大きな画像で表示することは出来たのですが、その時に別の場所に文字を表示したいのです。 (例えば:「山」の小さな画像をクリックすると大きな「山」の画像が表示されて←これはOK、 その下に「富士山」の文字を表示したい←これです。) 下記のようにしています。 <script language="javascript"> <!-- function Image(img){ document.getElementById("image").src=img} //--> </script> </head> <table> <tr> <td><img src="sample1_small.jpg" onclick="Image('sample1.jpg')"></td> <td><img src="sample2_small.jpg" onclick="Image('sample2.jpg')"></td> <td><img src="sample3_small.jpg" onclick="Image('sample3.jpg')"></td> <td><img src="sample4_small.jpg" onclick="Image('sample4.jpg')"></td> </tr> <tr> <td colspan="4"><img src="sample1.jpg" name="image"></td> </tr> <tr> <td>***ここに文字を表示させたいのです***</td> </tr> </table> 宜しくお願いします。

  • 動的にonclickを割当ながら、引数を正しく渡す方法を教えてください。

    皆様のお知恵を拝借させてください。 以下のように、HTML上の<div id="contents">の子になっている <div>のa~cに、動的にonclickの動作を割り当てようとしています。 Javascriptの独自関数abcの引数として、"contents"を渡すことにより、 その子となっている<div>を取得し、 それぞれについて、 「A~Cをクリックすると、それに該当するdivのidを表示する」 という内容になっています。 私の期待としては、  Aをクリックするとa  Bをクリックするとb  Cをクリックするとc を表示させたいのですが、 どれをクリックしてもcが表示されてしまいます。  ---------------------------------------------- <div id="contents"> <div id="a">A</div> <div id="b">B</div> <div id="c">C</div> </div> <script> abc("contents"); function abc(contents){ var elm = document.getElementById(contents); var cn = elm.childNodes; for (var i = 0; i < cn.length; i++) { var oElement = cn[i]; ★ document.getElementById(oElement.id).onclick = function(){def(oElement.id);}; } } function def(id){ alert(id); } </script> ------------------------------------ 要するに、 「動的にonclickの動作を割り当てることができる」 「引数がただしく渡せる」 の2つが満たしたいのですが、上記のような方法しかわからず、 行き詰ってしまっています。 また、説明を簡略化するためにあえてdef()の中身は、 alertのみにしていますが、実際にはもう少し複雑な処理をさせています。

  • JavaScript onClick

    JavaScript初心者です。 クリックしたら音が出るようにしたいのですが音がでません。 どなたかご回答よろしくお願いします。 <html> <head> <script language = "JavaScript"> <!-- function sound(name){ document.all.music.src = name; } --> </script> </head> <body> <bgsound src = # id = music autostart = true loop = true> <a href = # onClick = sound("img/oto.mp3")> <img src="img/picture.jpg"> </a> </body> </html>

  • JavaScriptのonclikについて

    いつもお世話になっております。 今回はJavaScriptで画像ボタンを使ったメニューの質問です。 画像ボタンが表示上imgA、imgB、imgC・・・とあり imgA.gifの画像ボタンをクリックするとimgA-1.gifが入れ替わって表示され、imgBのボタンをクリックするとimgA-1のボタンはimgAの元のボタンが表示されるようにしたいのです。 どなたかご教授お願いします。 <SCRIPT language="JavaScript"> function chImgA(name){ document.imgA.src = name; } function chImg2(name){ document.imgB.src = name; } //↓ savImg = null; savObj = null; function chImgA( imgID_TAG , clickedImgURL ) { } function chImgB( imgID_TAG , clickedImgURL ) { newObj = document.getElementById(imgID_TAG); if (savImg != null) { savObj.src = savImg; } savImg = newObj.src; savObj = newObj; newObj.src = clickedImgURL; } </SCRIPT>--> <td><A HREF="top.html" target="_top" onClick="images.imgA.src = 'img/imgA-1.gif';return true;"> <IMG src="img/imgA.gif" ALT="" BORDER="1" name="imgA" ID="imgA"></A></td>

  • 画像のハイパーリンクでのonClick

    何度もすみません。 <a href="test.html" target="frame2" onclick="func(this)"><img src="on.gif" border=0 name="images0" onclick="fncChangeBar(0)"></a><br> ハイパーリンクにも画像にもクリックイベントを書いた場合、どちらから実行されるのでしょう? 同時ですか? 優先させたい場合はどのように書いたらよいのでしょう?

  • 引数のない関数

    何度もすいませんが教えてください。 function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} } 上記の関数ですが、 <body onLoad="MM_preloadImages('img/aaa.gif','img/bbb.gif','img/ccc.gif')> という使い方をしています。 引数が宣言されていなくても成り立つのはなぜでしょうか。 教えてください。

  • ロールオーバーとOnclickで

    A href="javascript:;"target="_top" onclick="MM_nbGroup('down','group1','~.gif','detail','~.jpg',1)" id="_HPB_ROLLOVER1" onmouseover="HpbImgSwap('_HPB_ROLLOVER1', '~.gif'); HpbImgSwap('_HPB_ROLLOVER2', '~.jpg');" onmouseout="HpbImgSwap('_HPB_ROLLOVER1', '~.gif'); HpbImgSwap('_HPB_ROLLOVER2', '~.jpg');"><IMG src="~.gif" width="51" height="50" border="0" name="_HPB_ROLLOVER1"></A> 上のようにホームページビルダーを使って、ロールオーバーでサムネイルと大きな画像が切り替わるようにしています。 しかしサムネイルをクリックしたら、他のサムネイルをクリックするまで大きい画像が固定される方法がイマイチわかりません。 分かる方いらっしゃいましたら教えて下さい。 あまり詳しくなくて旨く説明できずにすみません。 http://irving.jp/rwr/discography.html のような 感じにしたいんです。

専門家に質問してみよう