Why does my alarmclock script stop working?
Whakkee的工作演示:http://www.obviousmatter.com/testso/hours2.html
但是我想使用下拉选择而不是文本输入。
(我通过'dropdown select'表示我的意思,这不是一个有效的例子) http://paulodonovan.net/Experiments/JavaScript/rise-and-shine/rise-and-shine_0.2.html
对于实验,我尝试用'select with options'代替'text input',但我不知道如何整合select:
<html>
<body>
<div>
<form name="frm">
<select name="hour">
<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
</select>
<select name="mins">
<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
<option value="32">32</option>
<option value="33">33</option>
<option value="34">34</option>
<option value="35">35</option>
<option value="36">36</option>
<option value="37">37</option>
<option value="38">38</option>
<option value="39">39</option>
<option value="40">40</option>
<option value="41">41</option>
<option value="42">42</option>
<option value="43">43</option>
<option value="44">44</option>
<option value="45">45</option>
<option value="46">46</option>
<option value="47">47</option>
<option value="48">48</option>
<option value="49">49</option>
<option value="50">50</option>
<option value="51">51</option>
<option value="52">52</option>
<option value="53">53</option>
<option value="54">54</option>
<option value="55">55</option>
<option value="56">56</option>
<option value="57">57</option>
<option value="58">58</option>
<option value="59">59</option>
</select>
<input type="button" value="Set Alarm" onclick="justonce=1;">
</form>
<font color=#660000 size=20 face=Tahoma><span id="hours"></span></font>
</div>
</body>
</html>
<script type="text/javascript">
obj_hours=document.getElementById("hours");
justonce=0;
function wr_hours()
{
time=new Date();
time_min=time.getMinutes();
time_hours=time.getHours();
time_wr=((time_hours<10)?"0":"")+time_hours;
time_wr+=":";
time_wr+=((time_min<10)?"0":"")+time_min;
obj_hours.innerHTML=time_wr;
if (justonce==1 && frm.mins.value==time_min && frm.hour.value==time_hours) {
alert('Hello. Rise and Shine. :-)');
justonce=0;
}
}
setInterval("wr_hours();",1000);
</script>
那不行,有什么想法?也许我需要使用索引?
我希望稍微个性化这个项目,并添加一些其他功能,例如
从10首歌曲的列表中选择要播放为警报的Youtube视频,并粘贴网址。我在功能方面找到了类似的例子,但代码对我来说非常复杂..:http://onlineclock.net/video/
'德国时间模式'复选框:'(一切都提前10分钟,所以你永远不会迟到。)'
如果时间允许: - 复选框以'Vintage Style'切换另一种CSS样式表。这可能包括我可以用CSS构建的模拟闹钟。
当然我宁愿理解并且会从头开始写作,我不希望任何人为我构建它,但任何指向相关教程或技术等的指针都会非常感激。
谢谢,保罗
答案 0 :(得分:3)
这个问题在我看来是
第1部分
如何从
<select>
获取所选值?
最简单的方法是为<select>
提供 id 属性,例如
<select id="foobar">
<option value="00">00</option>
<option value="01">01</option>
</select>
现在,在 JavaScript 中,您可以使用以下代码访问所选值
document.getElementById('foobar').value;
请注意,整个页面的 id 必须唯一。
第2部分
我怎样才能减去10分钟?
您正在使用的当前代码不使用Date对象进行用户选择,也不使用 Number ,它使用 String s(作为{ {1}}值)。这意味着要减去10分钟,你必须使用一个(或做一些过于复杂的事情)。由于你没有在这里使用 Date ,我会在答案中避免使用它(尽管你可能还是想考虑学习它)。
要做你想做的事,你需要再添加几个步骤。在下文中,<option>
和form_min
是用户选择的时间。
步骤1.将分钟和小时转换为数字。
form_hours
步骤2.减去10分钟
form_min = parseInt(form_min, 10);
form_hours = parseInt(form_hours, 10);
步骤3.如果分钟为负数,则减去1小时并添加60分钟。
form_min = form_min - 10;
步骤4.转换回 String 。
if (form_min < 0) {
form_hours = form_hours - 1;
form_min = form_min + 60;
}
如果您使用form_min = (form_min < 10 ? "0" : "") + form_min;
form_hours = (form_hours < 10 ? "0" : "") + form_hours;
(60分钟从0开始分钟等),您可以跳过第1步,因为您将获得 Number 的值,因为该选项value匹配此上下文中选项的索引。
答案 1 :(得分:1)
将id
属性添加到:<select id="hours" name="hours">
这是您需要从小时下拉菜单中获取价值的方式:
var hourField = document.getElementById("hours");
var obj_hours = hourField.options[hourField.selectedIndex].value;
您也可能需要在mins
下拉框中执行相同操作。