• ベストアンサー

Click回数を数え、規定された回数でアクションを起こす方法

初めまして。お世話になります。 (Layer1中の)Click回数を数え、規定された回数でアクションを起こす方法を模索しているところなのですが、、、 なかなかそれが見つかりません。 ご存知の方、ご教授頂ける方がおられたらと思い投稿させて頂きます。 例えば以下のsetTimeoutを利用したlinkの様に、setTimeをCrick回数に代替えし、 規定値(仮に10回)に達したところで別ページへ移動させるような方法があるんでは? なんて素人ながら思っているのですが。。 <SCRIPT type="text/javascript"> <!-- setTimeout("link()", 7000);  ←※クリック回数("link()",10); document.write(); function link(){ location.href='./title.html'; } --> </SCRIPT>

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

  • ベストアンサー
回答No.2

こんちくわぶぅ~! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <title>クリックした回数で、アクション?</title> <p id="a">5回押すと</p> <p id="b">1回だけでも</p> <script type="text/javascript"> //全角空白は、半角にでもなおしてね //@cc_on @set @V = (@_jscript_version >= 5.5) var clicker = {}; clicker.countup = (function () {  return function (e) {   var p = this.get(e);   if (p) {    p.count_buffer++;    if (p.count_buffer == p.counter) {     p.func.call();     p.count_buffer = 0;    }   }  }; })(); clicker.add = (function () {  return function (eid, count, func) {   var e = document.getElementById(eid);   var p;   if (! (p = this.get(e))) this.put(e, count, func);  }; })(); clicker.get = (function () {  return function(e) {   return this.hasOwnProperty (e.id) ? this[e.id]: null;  }; })(); clicker.put = (function () {  return function (e, count, func) {   this[e.id] = {element:e, counter:count, func:func, count_buffer:0};   return e;  }; })(); clicker.Listener = (function () { return function (evt) {   var e = evt./*@if (@V) srcElement @else@*/ target /*@end@*/;    if (e.id && clicker.get (e)) clicker.countup(e); }; })(); clicker.Finalizer = (function () { return function (e) {   document./*@if (1) detachEvent ('on' + @else@*/ removeEventListener (/*@end@*/     'click', clicker.Listener, false);      /*@if (1) detachEvent ('on' + @else@*/ removeEventListener (/*@end@*/     'unload', clicker.Finalizer, false); }; })(); //_______________________________ document./*@if(@V)attachEvent('on'+ @else@*/addEventListener(/*@end@*/  'click', clicker.Listener, false)   /*@if (1) attachEvent ('on' + @else@*/ addEventListener (/*@end@*/   'unload', clicker.Finalizer, false); //_______________________________ clicker.add ('a', 5, function(){alert("5かいおした!");}); clicker.add ('b', 1, hoge); function hoge() {  alert("1かいおした!"); } </script>

その他の回答 (2)

回答No.3

#No2.です。はやくもていせいします。 @if(1) を @if(@V) に! そのままでも、うごくとおもうけどね。 まちがいあったら、してきおねがいします。 ばぶ。

scapegoat_
質問者

お礼

babu様 ありがとうございます。動作確認出来ました! こちらを改良して目的に合った使い方をしていきたいと思います! 未だどこがどういう働きをしているか理解していない点はありますが、 追って調べてゆきたいと思います。

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

こんちくは。 <script type ="text/JavaScript"> <!-- function hoge(){ with(F1){ //回数アップ hogehoge.value = eval(hogehoge.value) + 1 //回数チェック if(eval(hogehoge.value) => 10)Then alert('10回越えた'); else alert('そうでもない'); end if } } //--> </script> ======================================== <body> <form name ="F1" method ="post"> <input type ="text" name ="hogehoge" value ="0"> <input type ="buttom" name ="bt1" onclick ="hoge()"> </form> </body> こんなんじゃダメ?? 試してはいません。 後考えるとしたら。。。 クリックしたら、クッキーに回数を保存&カウントアップ&読み込んで回数判断。かな。。。

scapegoat_
質問者

お礼

STICKY2006様 ありがとうございます。残念ながらご提示頂いたソースの回避チェック、 if(eval(hogehoge.value) => 10)で構文エラーとなり、動作確認がとれず、 またどこを修正すれば良いか理解できず申し訳なかったですが、 解決の兆しが見えましたのでお礼を兼ねご報告させて頂きます。

関連するQ&A