
お世話になります。
これまで基礎程度しか触れたことのない初心者で、足りないことを申し上げてしまうと思いますが教えていただけますと嬉しいです。
標記につきまして、サイトでかんたんなスタンプラリーのようなものを設置したいと思っています。
設置したいページにスタンプ画像を置き、画像をクリックすると一覧表のページに戻り、取ったスタンプが記録されており、全て揃えるとゴールのページのリンクが表示されるというかたちです。
参考になるサンプルを探してみたのですが、見つけたものは複雑で、cgiの触り方は分からずだったのでこちらはあきらめました。
参考サイト様:http://www.nmt.ne.jp/~misao/cgi/stamps.html
JavaScriptで出来ないかと考えております。
別のところで「画像がクリックされる度にイベントを発生させる。その画像のフラグを立て、クッキーにでも保存する。フラグをチェックし、全て立っていたらリンクを表示。」という回答文言があったのですが、文字だけで詳細なJavaScriptが無かったため実際にどういう構造なのかが分かりませんでした。
もし、サンプルや参考になりそうなサイトをご存じでしたら教えていただけますと嬉しいです。
宜しくお願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
HTML5 で実装できるなら
フラグを保存する
var STOREKEY = 'stump_rally_status';
function storeStatus(status) {
window.localStorage.setItem(STOREKEY, JSON.stringify(status));
}
function readStatus() {
var str = window.localStorage.getItem(STOREKEY);
var status = (str && str != 'null' && str != 'undefined')? JSON.parse(str): {};
return status;
}
画像がクリックされたらイベント
function recordStump(id, pswd) {
var status = readStatus();
status[id] = pswd;
storeStatus(status);
}
window.addEventListener('click', function(ev){
var elem = ev.target;
if (elem instanceof HTMLImageElement) {
if (elem && elem.dataset && elem.dataset.stump) {
var m = /(\w+)\/(\w+)/.exec(elem.dataset.stump);
if (m) recordStump(m[1], m[2]);
}
}
}, false);
<a href="一覧表のページ"><img data-stump="hoge/abc" src=stump_hoge.png></a>
<a href="一覧表のページ"><img data-stump="boke/ijk" src=stump_boke.png></a>
<a href="一覧表のページ"><img data-stump="fuga/xyz" src=stump_fuga.png></a>
フラグをチェックし、全て立っていたらリンクを表示
チート対策として、判断にダイジェスト値を利用する
function createDigest(str) {
var M = 0x1FFFFFFF;
var v = 123456789 & M;
for (var i = 0; i < str.length; i++) {
var c = str.charCodeAt(i);
v = (v * c * 2 + 3) & M; // TODO もっと難しく!
}
return v;
}
function checkRallyGoal(status) {
var KEYS = 'hoge,boke,fuga'.split(/,/);
var GOAL = createDigest('abc,ijk,xyz'); // TODO 定数に置換して
var passwords = KEYS.map(function(x){return status[x]}).join(',');
var digest = createDigest(passwords);
return digest == GOAL;
}
window.addEventListener('DOMContentLoaded', function(ev){
if (checkRallyGoal(readStatus())) {
var a = document.getElementById('goal').appendChild(document.createElement('a'));
a.href = 'ゴールのページ'; // TODO チート対策
a.textContent = 'ゴール';
}
}, false);
<p id=goal></p>
この度はありがとうございました。
お返事とお礼が大変に遅くなり申し訳ございませんでした。もっと難しいことを考えていて、あまりに無知だったとお恥ずかしい限りです。本当にありがとうございます。
しばらく作業が止まっていたのですが、またこれから頑張って作業を進めたいと思います。取り入れたい機能が増えたので、またわからないことがあればご教授をよろしくお願いいたします。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- HTML・CSS リンクバナーのHTMLタグ。画像を変えたり、設置位置を変えるとバナー貼付け側はどう見える? 2 2023/02/01 12:01
- Visual Basic(VBA) Excelのマクロコードについて教えてください 1 2022/03/27 12:02
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
- その他(プログラミング・Web制作) このWEB用語、WEB文章、意味が分かりますか? 理解できない人が多いようなんですが・・・ 7 2022/10/22 09:13
- gooブログ ブログの記事を書きだしのみに表示したい 1 2022/06/25 19:11
- Android(アンドロイド) いま3台のAndroidを使っています。 AndroidってiPhoneには無いmicroSDXCが 1 2022/05/06 11:42
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
-
ピンとくる人とこない人の違いは?直感を鍛える方法を心理コンサルタントに聞いた!
根拠はないがなんとなくそう感じる……。そんな「直感がした」という経験がある人は少なくないだろう。ただ直感は目には見えず、具体的な説明が難しいこともあるため、その正体は理解しにくい。「教えて!goo」にも「...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlでjavascriptソースを...
-
JavaScriptで日付を取得したいです
-
C#OpenCv V4にのエラーに関する...
-
Flashを使わず動きのあるかっこ...
-
ページの先頭へスクロールして...
-
ページ最終行へジャンプする方法
-
IE11だけ、currentTimeが効きま...
-
1.gifをホームページ上でランダ...
-
JAVASCRIPTで万年カレンダーを...
-
テーブル内のテキストを取得したい
-
あるgif画像(A.gifとします)...
-
html javascript リンク先アド...
-
JavascriptのJQuery UI Tabsで...
-
URLのパラメータを取得するスク...
-
replaceでの正規表現の記載につ...
-
AM,PMの時間表示について
-
イベントが初めの一回しか起き...
-
Google Apps Script で添付ファ...
-
var exports = exports || {}; ...
-
javascriptでのURLの引数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#OpenCv V4にのエラーに関する...
-
C#で、ContextMenuStripに動的...
-
google apps scriptの終了のさせ方
-
ASP.NET MVCでObjectをjsに渡す
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
ASP.NETのコントロールの値をJa...
-
なぜmatchメソッドがエラーにな...
-
javascriptでiframeのURL変更は?
-
gas スプレッドシートがアクテ...
-
翌月を取得するGASが分かりません
-
for文を使って変数に値を入れる...
-
APIを使って埋め込んだグーグル...
-
VSCODE[Python]の設定について
-
ローカルにあるファイルを検索...
-
C# 演算 奇数と偶数 表現の仕方
-
イベントが初めの一回しか起き...
-
C# 演算 分岐処理 繰り返し処理
-
setTimeoutによる繰り返しが途...
-
リンクの有無を判別して画像の...
おすすめ情報