0

SELECT リストに対して次の HTML を生成する drupal でレンダリングされた Web フォームがあります。このリストは、基本的にレストランのテーブルを予約するためのものです。クライアントは、1 日の時間帯に基づいて食事を事前に選択してほしいと言っています。そのため、午前 0 時から午後 3 時の間であれば、昼食が自動的に事前に選択されます。午後 3 時から午後 10 時 30 分までは、夕食が事前に選択された状態でフォームが表示されます。

<select class="form-select required" name="submitted[meal]" id="edit-submitted-meal">
  <option selected="selected" value="1">Lunch</option>
  <option value="2">Dinner</option>
  <option value="3">Sunday Dining</option>
</select>

目的を達成するために次のJSスニペットを作成しましたが、ページの読み込みでは機能しないようです

window.onload() {
  var today = new Date("<?php echo date("Y-m-d H:i:s"); ?>");
  var day = date.getDay();
  var hour = date.getHours();
  var meallist = document.getElementbyId("#edit-submitted-meal");
  if  (day == 0) {
    meallist.options[3].selected==true;
  }
  else {  
    if (hour > 15 && hour < 22) {
      meallist.options[2].selected==true;
    }
    else if (hour > 22 && hour < 24 {
      meallist.options[1].selected==true;
    }
    else if (hour > 0 && hour < 15 {
      meallist.options[1].selected==true;
    }
  }
}

助けていただければ幸いです。前もって感謝します。

PS : PHP コードは日付を JavaScript に挿入するため、ページがレンダリングされると行は var today = new Date("2013-01-15 15:49:45"); になります。

4

1 に答える 1

0

JavaScript 構文にエラーがあります

   window.onload(){
      //your code here
   }

する必要があります

   window.onload = (function(){ 
      //your code here
    });

また、document.getElementById を使用する場合は、「#」を含めたくない

次のように変数を設定するため

 meallist.options[1].selected==true;

単一の = のみを使用したい

  meallist.options[1].selected=true;

また、options 配列は 0 ベースであることにも注意してください。たとえば、 options value=3 は実際には

  meallist.options[2] not [3]

簡略化されたバージョンは、 http://jsfiddle.net/N7Yhr/にあります。

コンソール ウィンドウに他のエラー (firebug など) はありますか?

于 2013-01-15T15:58:44.583 に答える