2017-02-06 35 views
0

私はその日のジョークを作成しています。アプリは静かで、毎日新しい乱数を生成する方法を理解できません。乱数はjsonのジョークを指します。私は乱数部分を使用していますが、私はそれを新しい日にランダム化する必要があり、すべてのブラウザを更新する必要はありません。ここでJSまたはjqueryで毎日新しい乱数を取得

はどのくらい覚えているクッキーや.localStorageを使用して、一日一回だけ変更することが自分のランダムな値を取得するには、ユーザごとにOKなら、私はこれまで

<script> 
      $(document).ready(function() { 
       $.getJSON('js/jokes.json', function (data) { 
        var randomJoke = (Math.floor(Math.random() * data.OneLiners.length)); 
        var newJoke = randomJoke; 
        var decide = (Math.floor(Math.random() * 2)); 
        var jokeofDay = data.OneLiners[newJoke].joke; 
        var riddleofDay = data.Riddles[newJoke].Question; 
        var riddleAnswer = data.Riddles[newJoke].Answer; 
        var riddle = "Question: " + riddleofDay + "<br/> Answer: " + riddleAnswer; 
        if (decide == 0) { 
         document.getElementById("JoD").innerHTML = jokeofDay + " "; 
        } else { 
         document.getElementById("JoD").innerHTML = riddle; 
        } 
       }); 
      }); 

       if(jQuery) console.log('jQuery is loaded.'); 
     </script> 
+0

あなたは一日一回生成される乱数を必要とし、持続、またはできますそれはすべてのページの負荷で異なる乱数になりますか? – edcs

+0

数字は一日中残る必要があり、新しい日に新しい番号を生成するだけです – FoffySkrimshaw

答えて

0

得たものですが、それのために彼らは最後に新しい価値を得て以来です。

それ以外の場合は、独自の乱数ジェネレータを実装する必要があります。 JSに組み込まれているものは、あなた自身の "シード"を指定することはできません。 MDNから

実装は、乱数生成アルゴリズムへの初期シードを選択します。ユーザーが選択またはリセットすることはできません。

+0

一人一人の冗談が残っている限り、異なるユーザーが異なるジョークを取得しても問題ありません。とにかく(今のところ)いくつかのコンピュータにしか表示されません。それは仕事中のプロジェクトの一部です。私のチームは、天気、時間、株価などの情報を表示するアプリを開発しています。その日の冗談を、ホワイトボードに毎回書き込む支持者日。それは最終的にラズベリーパイに置かれ、休憩室の大きなモニターに表示されます。 – FoffySkrimshaw

1

最善の方法は、有効期限のあるクッキーに値を保存することです。そうすれば、ジョークIDの有効期限が切れているかどうかを判断することができます。これは、あなたがそれを行うことができる方法の純粋なJSの例である:

// Will return a joke id between the min and max values. Once the joke ID has 
// been generated for the day, it is persisted in a cookie until midnight. 
function getJokeId(minId, maxId) { 
    var jokeId = getCookie('joke'); 

    if (jokeId !== null) { 
    return jokeId; 
    } 

    var expire = new Date(); 
    expire.setHours(23,59,59,0); 

    jokeId = Math.floor(Math.random()*(maxId - minId + 1) + minId); 

    document.cookie = 'joke='+jokeId+';expires='+expire.toGMTString()+';path=/'; 

    return jokeId; 
} 


// Just a helper function for accessing cookies in JS - could be replaced with 
// jQuery plugin or similar if needed. 
function getCookie(name) { 
    var value = "; " + document.cookie; 
    var parts = value.split("; " + name + "="); 

    if (parts.length == 2) { 
    console.log('Found joke ID from cookie'); 
    return parts.pop().split(";").shift(); 
    } 

    console.log('No joke ID found - new one needed'); 
    return null; 
} 

getJokeId(0, 5); 

は、ここでのコード例のJSフィドルです:https://jsfiddle.net/edcs/0Lpg9ro6/

関連する問題