【发布时间】:2022-01-15 21:12:24
【问题描述】:
只是想知道是否有一种方法可以减少此代码,因为有很多 getElementById,可能使用数组等?
这里使用数组的主要问题(我相信)是 2 小时的时差。
disabled=true 也是 Internet Explorer 所必需的(烦人),因为 display=none 不适用于 IE 中的选项选择框。
<SCRIPT>
// IF TODAY IS SELECTED, ONLY ALLOW TIMES LATER IN THE DAY FROM DROP DOWN (2 hours in advance)
if (select.value == "<?php echo date("d-m-Y");?>") {
if ("<?php echo date("H:i");?>" > "10:00") {document.getElementById("12:00pm").style.display = 'none'; document.getElementById("12:00pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "10:15") {document.getElementById("12:15pm").style.display = 'none'; document.getElementById("12:15pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "10:30") {document.getElementById("12:30pm").style.display = 'none'; document.getElementById("12:30pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "10:45") {document.getElementById("12:45pm").style.display = 'none'; document.getElementById("12:45pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "11:00") {document.getElementById("13:00pm").style.display = 'none'; document.getElementById("13:00pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "11:15") {document.getElementById("13:15pm").style.display = 'none'; document.getElementById("13:15pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "11:30") {document.getElementById("13:30pm").style.display = 'none'; document.getElementById("13:30pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "11:45") {document.getElementById("13:45pm").style.display = 'none'; document.getElementById("13:45pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "12:00") {document.getElementById("14:00pm").style.display = 'none'; document.getElementById("14:00pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "12:15") {document.getElementById("14:15pm").style.display = 'none'; document.getElementById("14:15pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "12:30") {document.getElementById("14:30pm").style.display = 'none'; document.getElementById("14:30pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "12:45") {document.getElementById("14:45pm").style.display = 'none'; document.getElementById("14:45pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "13:00") {document.getElementById("15:00pm").style.display = 'none'; document.getElementById("15:00pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "13:15") {document.getElementById("15:15pm").style.display = 'none'; document.getElementById("15:15pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "13:30") {document.getElementById("15:30pm").style.display = 'none'; document.getElementById("15:30pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "13:45") {document.getElementById("15:45pm").style.display = 'none'; document.getElementById("15:45pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "14:00") {document.getElementById("16:00pm").style.display = 'none'; document.getElementById("16:00pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "14:15") {document.getElementById("16:15pm").style.display = 'none'; document.getElementById("16:15pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "14:30") {document.getElementById("16:30pm").style.display = 'none'; document.getElementById("16:30pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "14:45") {document.getElementById("16:45pm").style.display = 'none'; document.getElementById("16:45pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "15:00") {document.getElementById("17:00pm").style.display = 'none'; document.getElementById("17:00pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "15:15") {document.getElementById("17:15pm").style.display = 'none'; document.getElementById("17:15pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "15:30") {document.getElementById("17:30pm").style.display = 'none'; document.getElementById("17:30pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "15:45") {document.getElementById("17:45pm").style.display = 'none'; document.getElementById("17:45pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "16:00") {document.getElementById("18:00pm").style.display = 'none'; document.getElementById("18:00pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "16:15") {document.getElementById("18:15pm").style.display = 'none'; document.getElementById("18:15pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "16:30") {document.getElementById("18:30pm").style.display = 'none'; document.getElementById("18:30pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "16:45") {document.getElementById("18:45pm").style.display = 'none'; document.getElementById("18:45pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "17:00") {document.getElementById("19:00pm").style.display = 'none'; document.getElementById("19:00pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "17:15") {document.getElementById("19:15pm").style.display = 'none'; document.getElementById("19:15pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "17:30") {document.getElementById("19:30pm").style.display = 'none'; document.getElementById("19:30pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "17:45") {document.getElementById("19:45pm").style.display = 'none'; document.getElementById("19:45pm").disabled = true;}
if ("<?php echo date("H:i");?>" > "18:00") {document.getElementById("20:00pm").style.display = 'none'; document.getElementById("20:00pm").disabled = true;}
}
</SCRIPT>
【问题讨论】:
-
作为惩罚,你将复制一百次:
"I should not duplicate code",但只使用两行代码。 -
找到模式。你的 JavaScript 是“通过 ID 获取一些东西并用它做一些事情”,它可以归结为一个函数。您的时间变量可以是两个循环,一个从 10 到 18,另一个是四个时间间隔,或者您可以按时间增量执行一个循环。
-
这个问题可能属于codereview
标签: javascript php arrays