javascript函数冻结我的浏览器
我有两个选择对象,一个是开始时间,一个是结束时间。 例如,当我在“开始时间”中选择“11:00”时,我希望在“结束时间”中选择“11:00”之前的所有选项,禁用“11:15”,并选择“休息选项”。 我还想说我是javascript的新手 这是我的HTML代码的一部分:javascript函数冻结我的浏览器,javascript,html,Javascript,Html,我有两个选择对象,一个是开始时间,一个是结束时间。 例如,当我在“开始时间”中选择“11:00”时,我希望在“结束时间”中选择“11:00”之前的所有选项,禁用“11:15”,并选择“休息选项”。 我还想说我是javascript的新手 这是我的HTML代码的一部分: <select id="rbaslasaat" onchange="bitissaati(1384581600, 1384586100);"> <option value="1384581600">10:0
<select id="rbaslasaat" onchange="bitissaati(1384581600, 1384586100);">
<option value="1384581600">10:00</option>
<option value="1384582500">10:30</option>
<option value="1384583400">11:00</option>
<option value="1384584300">11:30</option>
<option value="1384585200">12:00</option>
<option value="1384586100">12:30</option>
</select></div>
<select id="rbitirsaat">
<option id="saatb1384581600" value="1384581600" disabled="">10:00</option>
<option id="saatb1384582500" value="1384582500" disabled="">10:30</option>
<option id="saatb1384583400" value="1384583400" disabled="">11:00</option>
<option id="saatb1384584300" value="1384584300" disabled="">11:30</option>
<option id="saatb1384585200" value="1384585200" disabled="">12:00</option>
<option id="saatb1384586100" value="1384586100" disabled="">12:30</option>
</select></div>
这是我的JavaScript函数:
function bitissaati(saata, saatb) {
var saata, saatb, saatc, saatca, sec, i;
saatc = document.getElementById('rbaslasaat');
saatca = saatc.options[saatc.selectedIndex].value;
sec = parseInt(saatca) + 900;
for (i = saata; i<= saatb; i + 900) {
if(i <= saatca ) { document.getElementById('saatb'+i).disabled=true; }
else { document.getElementById('saatb'+i).disabled=false; }
}
document.getElementById('saatb'+sec).selected=true;
}
我想不出是什么问题。
每次我尝试这个功能,我的浏览器都会冻结
感谢大家尝试帮助修复代码:
for ( i = saata; i<= saatb; i += 900) {
编辑:删除var将循环替换为此
for (var k = saata; k<= saatb; k += 900) {
if (k <= saatca) {
document.getElementById('saatb'+k).disabled=true;
}
else {
document.getElementById('saatb'+k).disabled=false;
}
}
我只想:
function bitissaati(elem) {
var opt = document.getElementById('rbitirsaat').getElementsByTagName('option'),
val = elem.value;
for (i=opt.length; i--;) {
opt[i].disabled = opt[i].value <= val;
}
}
如果重写var中的函数参数,它们将变得未定义。似乎简单的调试就足以理解程序的流程。玩电脑,或者在调试器中单步执行,或者使用铅笔和纸。什么是值,什么时候?如何修复它,我在顶部被定义?这解决了我的冻结问题。但是现在我有另一个错误,无法设置null的属性disabled。我想问一下,为什么我需要在函数开始时定义var i时再次定义它?所以,这一点都不重要,saata和saatb是未定义的?这很有效。但我只想再问一件事。opt[i].disabled=opt[i].value opt[i]是当前迭代的选项,opt[i].disabled=true/false将disabled属性设置为true或false,因此,如果当前选项的时间值小于或等于上一次选择中所选的时间值,则将上一次选择中所选选项的值与当前迭代选项的值进行比较将返回false,从而将disabled属性设置为true或false。