
お世話になります。
これまで基礎程度しか触れたことのない初心者で、足りないことを申し上げてしまうと思いますが教えていただけますと嬉しいです。
標記につきまして、サイトでかんたんなスタンプラリーのようなものを設置したいと思っています。
設置したいページにスタンプ画像を置き、画像をクリックすると一覧表のページに戻り、取ったスタンプが記録されており、全て揃えるとゴールのページのリンクが表示されるというかたちです。
参考になるサンプルを探してみたのですが、見つけたものは複雑で、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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#OpenCv V4にのエラーに関する...
-
var exports = exports || {}; ...
-
1日1回引けるJavaScriptおみく...
-
Flashを使わず動きのあるかっこ...
-
googleマップAPIにて緯度経度に...
-
JavaScriptで日付を取得したいです
-
翌月を取得するGASが分かりません
-
1.gifをホームページ上でランダ...
-
vb.netでの記述方法について 以...
-
ページの先頭へスクロールして...
-
Google Apps Script で添付ファ...
-
GASでGoogleフォームの自動返信...
-
replaceでの正規表現の記載につ...
-
あるgif画像(A.gifとします)...
-
JavaScriptで文字列の特定文字...
-
URLのパラメータを取得するスク...
-
条件に応じて座席表をつくりた...
-
javascriptでのURLの引数
-
ASP.NET MVCでObjectをjsに渡す
-
正規表現について質問です。条...
マンスリーランキングこのカテゴリの人気マンスリー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による繰り返しが途...
-
リンクの有無を判別して画像の...
おすすめ情報