お世話になります。
これまで基礎程度しか触れたことのない初心者で、足りないことを申し上げてしまうと思いますが教えていただけますと嬉しいです。
標記につきまして、サイトでかんたんなスタンプラリーのようなものを設置したいと思っています。
設置したいページにスタンプ画像を置き、画像をクリックすると一覧表のページに戻り、取ったスタンプが記録されており、全て揃えるとゴールのページのリンクが表示されるというかたちです。
参考になるサンプルを探してみたのですが、見つけたものは複雑で、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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptを使って毎日決まっ...
-
C#OpenCv V4にのエラーに関する...
-
VSCODE[Python]の設定について
-
Jscriptからのオープン
-
ジャバスプリクトについて
-
C#で、ContextMenuStripに動的...
-
jsによって検索プルダウン、都...
-
択一形式のテストをつくりたいです
-
APIを使って埋め込んだグーグル...
-
[ javascript ] 連想配列の初期...
-
HTMLにWSHを組み込む
-
Javaで避けるゲームを作ってい...
-
google apps scriptの終了のさせ方
-
C言語の質問です HTMLでこのよ...
-
なぜmatchメソッドがエラーにな...
-
1日1回だけ引けるjavascriptお...
-
ASP.NETのコントロールの値をJa...
-
ジェネレーターの作り方
-
GASでundefinedエラーが出ます
-
functionから別のfunctionを実...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
ジェネレーターの作り方
-
GASでundefinedエラーが出ます
-
ASP.NETのコントロールの値をJa...
-
C#で、ContextMenuStripに動的...
-
翌月を取得するGASが分かりません
-
gas スプレッドシートがアクテ...
-
ASP.NET MVCでObjectをjsに渡す
-
シンプルなweb版スタンプラリー...
-
ローカルにあるファイルを検索...
-
なぜmatchメソッドがエラーにな...
-
VSCODE[Python]の設定について
-
1日1回だけ引けるjavascriptお...
-
javascriptでiframeのURL変更は?
-
html javascript リンク先アド...
-
lengthが読めない理由が分からない
-
googleスプレッドシートのApps ...
-
【javascript】正規表現で括弧...
-
HTMLにWSHを組み込む
おすすめ情報