• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:期日に応じてチェックボックスを有効にしたり無効に)

Javascriptを使用して期日に応じてチェックボックスを有効にする方法

このQ&Aのポイント
  • Javascriptの文法を誤っているため、チェックボックスの有効化が正しく機能していないようです。
  • チェックボックスの有効化は、document.getElementByIdを使用して行うことができます。指定した要素のdisabled属性をfalseに設定することでチェックボックスを有効にすることができます。
  • 期日に応じてチェックボックスを有効にするには、Dateオブジェクトを使用して現在の日付と比較する必要があります。条件を満たす場合にのみ、document.getElementByIdを使用してチェックボックスを有効にすることができます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

かいとうがつきませんね? とりあえず、firefox でうごきます ぜんかくくうはくは、はんかくに おきかえしてください ひづけの くぎりが いいかげんだったり。 <!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>

chack
質問者

お礼

こ・・・これは・・・ 私が応用しようとしていたコードをちょっといじったくらいではダメだったんですね。 私の頭ではこれを理解するのにかなり時間がかかりましたが、どういうことなのかおかげさまでわかりました。 ご回答ありがとうございました。