- ベストアンサー
onClickへの代入について
以前onClickへの代入方法についてお聞きしましたが、 また壁にぶつかっておりますので教えてください。 バナーのクリック数をカウントするために、GoogleAnalyticsの以下の関数をaタグのonClickに追加して利用しています。 <a href="xxx.html" onClick="javascript:urchinTracker(\'/test/test\');"><img src="xxx.gif"></a> これは問題ないのですが、 Javascriptで画像を切り替えるため以下のような構成でテストしたところ、 src、href、targetは正常に代入されるのですが、 onClickのみjavascript:urchinTracker(\'/test/test\');のままで、/test/aaaが代入されません。 また、元のHTMLソースからonClickタグ自体を削除すると、onClickタグそのものが代入されません。※Firebugで確認しています。 Javascritpt(sample_chg.js)部分 myImage = new Array(4); myImageName = 0; myImageLink = 1; myImageTarget = 2; myImageOnclick = 3; myImage[myImageName] = "dummy01.gif"; myImage[myImageLink] = "http://xxxxx.com/"; myImage[myImageTarget] = "_blank"; myImage[myImageOnclick] = "javascript:urchinTracker(\"/test/aaa\");"; function myChange(){ document.getElementById("myFormImg").src = myImage[myImageName]; document.getElementById("myLink").href =myImage[myImageLink]; document.getElementById("myLink").target =myImage[myImageTarget]; document.getElementById("myLink").onClick =myImage[myImageOnclick]; } HTML部分 <a id="myLink"onClick="javascript:urchinTracker(\'/test/test\');"><img id="myFormImg"></a> <script language="javascript" type="text/javascript" src="/js/sample_chg.js"></script> <script language="javascript" type="text/javascript"> myChange(); </script> 以前文字列については関数にして代入せよと教えていただいたのですが、 このような場合はどうすればよいのでしょうか。 どうぞよろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
お礼
早速のご回答ありがとうございます。 HTML部分を以下の記述に変更し早速試してみました。 <a id="myLink"onclick="alert('HELLO')"> 正常に代入されればクリック時にアラートが出ないはずですが、 なぜかアラートがでてしまいます。 いろいろ修正したところ、 教えていただいたJavascript部分 document.getElementById("myLink").onClick = function(){myImage[myImageOnclick]();}; の onClick = を onclick = に修正するとアラートがでなくなりました。 試しに代入される関数をalert('こんにちは')にすると、 「こんにちは」というアラートが出ましたので、正常に動作しているようです。 なぜ大文字だとダメなのかよくわからないのですが、 とりあえず問題は解決したようです。 正常にクリックが取得できているかどうかがわかるまではもう少しかかるのですが、取り急ぎお礼を。 本当にありがとうございました。
補足
すいません。またわからなくなりました。 代入がうまくいったので、画像を切り替えるscriptを組んでみたのですが、 なぜかonClickの関数の順番がずれてしまいます。 サンプルを作りました。 http://oreryu.sakura.ne.jp/sample/test.html 本来最初の画像をクリックすると「画像01」というアラートが出るはずなのですが、 「画像02」が出てしまいます。※元の質問にあるクリック数の関数でも同様です。 他の設定は全て正常なのですが、なぜonClickの順番がずれるのでしょうか。 本来の質問から逸れてしまっていますが、もしご指摘いただけると助かります。 ※分かりやすくするため、script部分の記述を回答しただいた方法と若干変えております。 banner= new Array(); banner[0]=new Array("dummy01.gif","#","_top",function(){alert('画像01')}); banner[1]=new Array("dummy02.gif","#","_top",function(){alert('画像02')}); banner[2]=new Array("dummy03.gif","#","_top",function(){alert('画像03')}); banner[3]=new Array("dummy04.gif","#","_top",function(){alert('画像04')}); time= new Array(); //バナーの表示時間 上から表示順 time[0]=(2000); time[1]=(3000); time[2]=(4000); time[3]=(5000); var menu=0; var myImageName = 0; var myImageLink = 1; var myImageTarget = 2; var myImageOnclick = 3; function myChange(){ document.getElementById('myFormImg').src = banner[menu][myImageName]; document.getElementById('myLink').href =banner[menu][myImageLink]; document.getElementById('myLink').target =banner[menu][myImageTarget]; document.getElementById('myLink').onclick = function(){banner[menu][myImageOnclick]();}; timerID = setTimeout("myChange()",time[menu]); if(menu == banner.length-1){ menu=0; }else{ menu++; } } HTML部分 <body> <a href="#" onClick="" id="myLink"><img src="" border="0" id="myFormImg"></a> <script language="javascript" type="text/javascript" src="sample_chg_03.js"></script> <script language="javascript" type="text/javascript"> <!-- myChange(); //--> </script> </body>