- ベストアンサー
onloadがうまくいかない
onloadを使って、 下記HPのtoggleエフェクトのJSが適用されたボタンを押したいのですがうまくいきません。 http://demos.mootools.net/Fx.Slide 現在作成コードの一部は、 ヘッダー部から、 <script type="text/javascript"> window.addEvent('domready', function(){ //-vertical var mySlide = new Fx.Slide('test'); $('toggle').addEvent('click', function(e){ e = new Event(e); mySlide.toggle(); e.stop(); }); }); </script> <body onload="document.getElementById('help').click()"> <input type="button" id="help" name="toggle" value="ヘルプを表示"> <div id="test"> ヘルプ内容 </div> </body> みたいな感じで、 他にもログアウトボタンやらあるんですが、 それらのボタンは上記onloadの方法で起動できます。 なぜかJSが適用されてるボタンだけ出来ないような感じなのですが、 何か解決策はありますでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
<script type="text/javascript"> window.addEvent('domready', function(){ //-vertical var mySlide = new Fx.Slide('test'); $('toggle').addEvent('click',function(e){ e = new Event(e); mySlide.toggle(); e.stop(); }); } function aa(e){ e = new Event(e); mySlide.toggle(); e.stop(); }; window.onload=aa; </script> addEventの内容がaddEventListenerやattachEventを使っているだけで、$と言う関数がgetElementsByTagNameでname属性が一致するものを返しているだけと言う前提で回答すれば、$('toggle')のonclickはIE6でnull、Firefox1.5でundefinedになっていると思います。 addEventで特別なことをしていなければ、document.getElementById('help').click自体もundefinedじゃないかと思います。 そこで、onload時に実行したい関数に名前を付けてonload時に実行してやれば良いかもしれません。 だた、現状でIE6で「関数を指定してください。」などのエラーが出ないのが不思議な気もします。 alert($('toggle'),onclick)が function (e){ e = new Event(e); mySlide.toggle(); e.stop(); } と表示されるならonload="document.getElementById('help').onclick()で行けると思いますけどeがネックになりますね。 e = new Event(e); e.stop(); を削っても動くようなら新規に window.onload = function (e){ mySlide.toggle(); } と言う関数を作れば取りあえずは動くでしょうね。 eがイベントでしたらEvent(e)で何が返ってくるか調べてstop();で何をするかを調べて対処するしかないでしょう。
その他の回答 (3)
書き方みたいのが有ったから 参考に http://web.paulownia.jp/script/tips/handler.html
補足
色々試してみましたがやっぱり動かないみたいです。 他に何かありますでしょうか? ANo.1で途切れているSAYKA様の考えたコードも試してみたいのですが・・・
ごめん 途中で切れちゃったけど 判るよね・・・
補足
ん? ちょっとわからないです・・・ まだまだ使い始めたばかりなので。 ちなみにIE用ですがFireFoxでも動けばそれにこしたことはないです。
function定義とaddEventを別々にやっても無理? っていうかこれIE用? function a(){} window.addEvent('domready',a
補足
返答遅くなって申し訳ありません。 やっぱり無理なようです。 e = new Event(e); e.stop();は削っても動くみたいです。 ちょっとJavascript初心者の私には難しいですね。 また何か方法があればお願いします。