2016-12-04 6 views
-2

[UPDATED VERSION]配列の人を選択して表示させる必要があるウェブサイトを構築して表示しています。しかし、何らかの理由で、今日初めて初めての日には、毎日のダブルを表示します。ここでは、次のとおりです。UPDATED毎日のダブルHtml/Javascriptを表示して選択する


<DOCTYPE html!> 
<html> 
<head> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
</head> 
<body onload="onload()"> 
    <div id="dd"> 
     <h1>Todays Daily Double Is: </h1><h1 id="person"></h1> 
     <script type="text/javascript"> 
     function onload(argument) { 
      document.getElementById('person').innerHTML = rand; 
     } 
     function runOncePerDay(){ 
      var today = new Date().toLocaleDateString(); 

      // if this function already ran today, do not continue. 
      if(localStorage.yourapp_today == today) return; 

      // save today's date on the client's computer 
      localStorage.yourapp_today = today; 

      // your code below 
      myArray = ["Ethan Goodhart", "Emma Meyers", "Toby Parker"]; 
      var rand = myArray[Math.floor(Math.random() * myArray.length)]; 
      document.getElementById('person').innerHTML = rand; 

     } 

     runOncePerDay(); // will work 
     </script> 
    </div> 
</body> 
</html> 
+0

'常に定義されていない、あなたの' onload'にrand'。変数スコープを見てみましょう... 'div'の' script'は決して良くありません – baao

答えて

0

あなたはそれが動作しません解決しようとしている方法。 rand変数は、サイトを最後に開いたときにそのクライアントのマシンにあったものを覚えていません。代わりに、最後の更新タイムスタンプで作業し、必要なときにのみlocalStorageをリフレッシュする必要がありますが、最初は常にlocalStorageからデータを取得する必要があります。以下は、あなたが何をしたいの作業を実装したものです:

function onload() { 
 
    var data = localStorage.getItem("appSettings"); 
 
    if (! data || ! isTodayDate(JSON.parse(data).date)) { 
 
    data = getData(); 
 
    } 
 
    data = JSON.parse(data); 
 
    document.getElementById("person").innerHTML = data.text; 
 
} 
 

 
function isTodayDate(date) { 
 
    return moment().diff(moment(date), 'days') == 0; 
 
} 
 

 
function getData() { 
 
    var myArray = ["Ethan Goodhart", "Emma Meyers", "Toby Parker"]; 
 
    var rand = myArray[Math.floor(Math.random() * myArray.length)]; 
 
    var obj = { 
 
    date: moment(), 
 
    text: rand 
 
    }; 
 
    localStorage.setItem("appSettings", JSON.stringify(obj)); 
 
    return JSON.stringify(obj); 
 
} 
 

 
onload();
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js"></script> 
 
<h1>Todays Daily Double Is: </h1><h1 id="person"></h1>

関連する問題