質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

1655閲覧

おみくじを1回しか引けないようにしたい

beginner001

総合スコア29

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

3クリップ

投稿2020/04/10 07:24

編集2020/04/14 02:39

JavaScript

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<title>おみくじ</title> 5<style> 6body{ 7background-color:lightblue; 8} 9p{ 10text-align:center; 11font-size:2em; 12margin-top:100px; 13} 14</style> 15</head> 16<body> 17<script> 18// 大吉・吉・中吉・小吉・末吉・凶・大凶 19let kujis =["大吉","吉","吉","吉","中吉","中吉","小吉","小吉","小吉","末吉","末吉","凶","凶","大凶"]; 20//console.log(kujis[0]); 21let kuji = Math.floor(Math.random()*kujis.length); 22    23//console.log(kuji); 24document.write("<p>あなたの今年の運勢は"+kujis[kuji]+"です</p>") 25 26document.cookie = 'name=太郎' + encodeURIComponent('outlet shoes'); 27 28 29</script> 30</body> 31</html> 32

このようにしましたが、Chromeのcookieに何も表示されません。
記述のどこかに誤りがあるでしょうか? よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/04/10 07:27

どれくらい厳格に「1回」を守らせたいですか?
beginner001

2020/04/11 05:22

失礼しました。 ブラウザを起動するたびに1回は引ける、というようにしたいのと、1日に1回しか引けないの2通りをしたいです。欲張りで申し訳ありません。 よろしくお願いします。
June666

2020/04/13 01:38

「ブラウザを起動するたびに1回は引ける、というようにしたいのと、1日に1回しか引けないの2通りをしたいです。」だと矛盾してしまうような。。 ブラウザを起動するたびに1回は引けるおみくじと1日一回限定おみくじの2つを作りたいということでしょうか?
beginner001

2020/04/13 05:10

1日に1回は引ける、というくじにしたいのですが、結局cookieが関わってくるのですね。 ということはjavascriptの記述にcookieの記述をするのでしょうか。
June666

2020/04/13 05:21

javaScriptでcookieにデータを書き込むことで実現できます。 cookieの操作については私がコメントに書いたリンクを見るとわかると思います。
beginner001

2020/04/13 22:17

教えていただいたリンク先を見て、下記のようにscript内に追記してみましたが、Chromeのcookieには何も表示されません。記述のどこかに誤りがあるでしょうか? よろしくお願いします。 <script> // 大吉・吉・中吉・小吉・末吉・凶・大凶 let kujis =["大吉","吉","吉","吉","中吉","中吉","小吉","小吉","小吉","末吉","末吉","凶","凶","大凶"]; //console.log(kujis[0]); let kuji = Math.floor(Math.random()*kujis.length);     //console.log(kuji); document.write("<p>あなたの今年の運勢は"+kujis[kuji]+"です</p>") document.cookie = 'name=太郎' + encodeURIComponent('outlet shoes'); </script>
June666

2020/04/14 00:50

一応ここは質問の修正を依頼したりする欄になるので質問に追記する形で書いてください 下記のように`で囲むことでマークダウンとなるので活用してください。 ```JavaScript コード ```
June666

2020/04/14 02:01

もともと書いてあったソースは混乱のもとになるので削除してください
guest

回答3

0

ベストアンサー

maisumakunさんがおっしゃる通り
どれくらい厳格に「1回」を守らせたいかによって対応方法が変わると思います。

仮の仕様として
おみくじを引いて〇日以内は引けない。とした場合
簡易的に実現したい場合はcookieを使用すれば実現可能です。ただcookieを消せばまた引けてしまいます。

 必ず一定期間引けなくする場合はデータベースでユーザーとおみくじ引いた履歴の管理が必要になるかと思います。

cookie参考
サイトの情報を自由に処理! JavaScriptでcookieを扱う方法を徹底解説

--追記--
すみません。私も確認不足でした。
実行している環境はローカル環境でしょうか?
(例:デスクトップにおいてあるhtmlファイルを実行している)
ローカルファイルの場合はcookieへの記述は難しいようです。

 > 解決法としては、Apache等のHTTPサーバをローカルPCにインストールする事が考えられます。
ローカル環境でのCookieについて(javascript)

投稿2020/04/10 08:44

編集2020/04/14 01:56
June666

総合スコア290

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

beginner001

2020/04/14 03:10

June666さん、ありがとうございました。 納得いたしました。
guest

0

フラグを立てれば良いのでは?
JSの書き方は知りませんがロジックの例として。

var firstTime = true

if firstTime {//trueなので実行
処理実行
self.firstTime = false//ここでfalseに切り変えるので次からはif分は通らない
}

投稿2020/04/10 07:40

yasumaro

総合スコア67

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/04/10 07:43

もとからページ表示に対して1回しか実行しないので、これを付けて動作が変わることはないです。
yasumaro

2020/04/10 08:46 編集

「ブラウザ上で1回しかおみくじが引けない」でしたか。。 >もとからページ表示に対して1回しか実行しないので そうですね。おっしゃる通りです
guest

0

ブラウザを起動するたびに1回は引ける

これはwinow.onloadで最初にcookieを消せば良いのです
起動するたびなのでこれもサーバーになるかと

1日に1回しか引けない

これはcookie自体も消されたら無理なので
例えばnode.jsを使ってサーバーを立てるのも一つの手だと思います

投稿2020/04/11 23:16

編集2020/04/11 23:18
-Soso-

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問