久々の回答
0だけは5回中1回表示し、他は条件なしのランダムで
http://oshiete.goo.ne.jp/qa/7666439.html
久々に回答!
普通なら
<!DOCTYPE html> <meta charset="UTF-8"> <title></title> <script> function random () { var ary = []; function range (a, b) { var ary =[]; var i; for (i = a; i <= b; i++) { ary.push (i); } return ary; } function randomInt (n) { return Math.floor (Math.random () * n); } function shuffle (ary) { var len = ary.length; var i, n, m; for (i = len; i; ) { n = randomInt (i--); m = ary[i]; ary[i] = ary[n]; ary[n] = m; } return ary; } function ikasama (ary) { var insertAry = [0,0,0,0]; var len = insertAry.length; var span = 5; var i; for (i = 0; i < len; i++) { ary.splice (i * span + randomInt (span), 1, insertAry[i]); } return ary; } function reset () { ary = ikasama (shuffle (range (1, 20))); alert(ary); } return function () { if (0 === ary.length) { reset (); } return ary.shift (); }; } var next = random (); setInterval (function () { alert (next ()); }, 1000); </script>
yield を使うなら
<!DOCTYPE html> <meta charset="UTF-8"> <title></title> <script type="application/javascript; version=1.8"> var random = (function ikasama () { function randomInt (n) Math.random () * n | 0 function range (a, b) { for (; a <= b;) yield a++ } function shuffle (ary) { let n; while (0 < (n = ary.length)) yield ary.splice (randomInt (n), 1) } function ikasama (a,b) this.ary.splice (this.span * b + randomInt (this.span), 1, a) var r; var ary = [x for each (x in range (1, 20)) ]; var buf = []; var insertAry = [0,0,0,0]; while (true) { if (buf.length < 1) { buf = [x for each (x in shuffle (ary)) ]; insertAry.forEach (ikasama, { ary: buf, span: 5 }); // ここがいけてない } yield buf.shift (); } }) (); setInterval (function () { alert (random.next ()); }, 1000); </script>
期日に応じてチェックボックスを有効にしたり無効に
http://oshiete.goo.ne.jp/qa/7666345.html
おまけで回答。
<!DOCTYPE html> <meta charset="UTF-8"> <title></title> <style> input[type="checkbox"]:disabled + label { color: #aaf; } input[type="checkbox"]:checked + label { border-bottom: 2px red solid; } </style> <form> <input name="希望区域" type="checkbox" value="末広町"><label>末広町</label> <input name="希望区域" type="checkbox" value="緑町"><label>緑町</label> <input name="希望区域" type="checkbox" value="新田町"><label>新田町</label> <input name="希望区域" type="checkbox" value="洋野町"><label>洋野町</label> </form> <script type="application/javascript; version=1.8"> function hashDictionary (a,b) { return b.value ? ((a[b.value] = b), a): a } function toElement (a) { return this.dic[a] } function setDisabled (a) { a.disabled = !!this.disabled } function setState (condition) { var a = condition.date.match (/\d+/g); if (! a) throw new Error; var sDate = +(new Date (a[0], a[1]-1, a[2])); var eDate = +(new Date (a[3], a[4]-1, a[5])); var ary = []; if (sDate <= this.target) { if (this.target <= eDate) { ((condition.item instanceof Array) ? condition.item: [condition.item]) .map (toElement, this) .forEach (setDisabled, condition); } } } var ConditionList = [ { date: '2012-08-05/2012-08-31', item: ['洋野町', '緑町'], disabled: true }, { date: '2012年08月05日/2012年08月31日', item: ['末広町', '新田町'], disabled: false } ]; var checkbox = document.querySelectorAll ('form input[type="checkbox"][name="希望区域"]'); var hash = Array.prototype.reduce.call (checkbox, hashDictionary, new Object); ConditionList.forEach (setState, {dic: hash, target: +(new Date)}); //_________________ document.addEventListener ('click', function (event) { var e = event.target; if ('checkbox' === e.type) alert (e.value + 'を押したね'); }, false); </script>
夏風邪で、咳が続く。
大口の仕事をこなすも、売上にはつながらず疲れだけが増す。
この業界、「先生」と呼ばれる名家からの仕事は、面倒だというが…。
(代議士、医者、弁護士、学校の先生などなど・・・)それじゃなくても疲れることもあるね〜。