0

我有一个 drupal 呈现的网络表单,它为 SELECT 列表生成以下 HTML。该列表主要用于在餐厅预订餐桌。我的客户希望我根据一天中的时间预先选择餐点。因此,如果它在午夜和下午 3:00 之间,则应自动预先选择午餐。下午 3:00 至晚上 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;

另请记住,选项数组是基于 0 的。例如 options value=3 实际上是

  meallist.options[2] not [3]

可以在此处找到简化版本 http://jsfiddle.net/N7Yhr/

您的控制台窗口中是否还有其他错误(萤火虫等)?

于 2013-01-15T15:58:44.583 回答