这个javascript为什么可以在谷歌浏览器上用,却不能在IE6上用?

gg882 2011-07-28 12:23:45
<html>
<head>
<script type="text/javascript">
function insertOption()
{
var before = document.getElementById("beforeTime").value;
var after=document.getElementById("afterTime");
after.options.length=0;
var newOption;
var arr=new Array("06:00","06:30","07:00","07:30","08:00","08:30","09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30","13:00","13:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30","18:00","18:30","19:00","19:30","20:00","20:30","21:00","21:30","22:00","22:30","23:00","23:30","23:59");
var date=new Array("60000","63000","70000","73000","80000","83000","90000","93000","100000","103000","110000","113000","120000","123000","130000","133000","140000","143000","150000","153000","160000","163000","170000","173000","180000","183000","190000","193000","200000","203000","210000","213000","220000","223000","230000","233000","235900");

for (var i=0;i<arr.length;i++){

if(before==date[i]){
if(i<=30){
for(var j=0;j<7;j++){
newOption = document.createElement('option');
newOption.text = arr[i+j];
newOption.value=date[i+j];
after.add(newOption,null);
}
}
else{
for(var j=0;j<=(36-i);j++){
newOption = document.createElement('option');
newOption.text = arr[i+j];
newOption.value=date[i+j];
after.add(newOption,null);
}
}



}
}
}
</script>
</head>
<body>

<form>
<select id="beforeTime" onchange="insertOption()">
<option>请选择...</option>
<option selected="selected" value="60000">06:00</option><option value="63000">06:30</option><option value="70000">07:00</option><option value="73000">07:30</option><option value="80000">08:00</option><option value="83000">08:30</option><option value="90000">09:00</option><option value="93000">09:30</option><option value="100000">10:00</option><option value="103000">10:30</option><option value="110000">11:00</option><option value="113000">11:30</option><option value="120000">12:00</option><option value="123000">12:30</option><option value="130000">13:00</option><option value="133000">13:30</option><option value="140000">14:00</option><option value="143000">14:30</option><option value="150000">15:00</option><option value="153000">15:30</option><option value="160000">16:00</option><option value="163000">16:30</option><option value="170000">17:00</option><option value="173000">17:30</option><option value="180000">18:00</option><option value="183000">18:30</option><option value="190000">19:00</option><option value="193000">19:30</option><option value="200000">20:00</option><option value="203000">20:30</option><option value="210000">21:00</option><option value="213000">21:30</option><option value="220000">22:00</option><option value="223000">22:30</option><option value="230000">23:00</option><option value="233000">23:30</option><option value="235900">23:59</option>
</select>
   
<select id="afterTime">

</select>
</form>
</body>
</html>




...全文
66 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
C_S_D_N_110 2011-07-28
  • 打赏
  • 举报
回复
Up LS!



-----------------------------
老虎系列插件v1.4即将面世
豆虫 2011-07-28
  • 打赏
  • 举报
回复
<html>
<head>
<script type="text/javascript">
function insertOption()
{
var before = document.getElementById("beforeTime").value;
var after=document.getElementById("afterTime");
after.options.length=0;
var newOption;
var arr=new Array("06:00","06:30","07:00","07:30","08:00","08:30","09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30","13:00","13:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30","18:00","18:30","19:00","19:30","20:00","20:30","21:00","21:30","22:00","22:30","23:00","23:30","23:59");
var date=new Array("60000","63000","70000","73000","80000","83000","90000","93000","100000","103000","110000","113000","120000","123000","130000","133000","140000","143000","150000","153000","160000","163000","170000","173000","180000","183000","190000","193000","200000","203000","210000","213000","220000","223000","230000","233000","235900");

for (var i=0;i<arr.length;i++){

if(before==date[i]){
if(i<=30){
for(var j=0;j<7;j++){
newOption = document.createElement('option');
//newOption.text = arr[i+j]; // ie下text不管用 FF下有这个属性
newOption.innerHTML = arr[i+j];
newOption.value=date[i+j];
after.appendChild(newOption); //用这个取代add dom通用
//after.add(newOption,null);
}

}
else{
for(var j=0;j<=(36-i);j++){
newOption = document.createElement('option');
//newOption.text = arr[i+j];
newOption.innerHTML = arr[i+j];
newOption.value=date[i+j];
after.appendChild(newOption);
//after.add(newOption,null);
}
}



}
}
}
</script>
</head>
<body>

<form>
<select id="beforeTime" onchange="insertOption()">
<option>请选择...</option>
<option selected="selected" value="60000">06:00</option><option value="63000">06:30</option><option value="70000">07:00</option><option value="73000">07:30</option><option value="80000">08:00</option><option value="83000">08:30</option><option value="90000">09:00</option><option value="93000">09:30</option><option value="100000">10:00</option><option value="103000">10:30</option><option value="110000">11:00</option><option value="113000">11:30</option><option value="120000">12:00</option><option value="123000">12:30</option><option value="130000">13:00</option><option value="133000">13:30</option><option value="140000">14:00</option><option value="143000">14:30</option><option value="150000">15:00</option><option value="153000">15:30</option><option value="160000">16:00</option><option value="163000">16:30</option><option value="170000">17:00</option><option value="173000">17:30</option><option value="180000">18:00</option><option value="183000">18:30</option><option value="190000">19:00</option><option value="193000">19:30</option><option value="200000">20:00</option><option value="203000">20:30</option><option value="210000">21:00</option><option value="213000">21:30</option><option value="220000">22:00</option><option value="223000">22:30</option><option value="230000">23:00</option><option value="233000">23:30</option><option value="235900">23:59</option>
</select>
   
<select id="afterTime">

</select>
</form>
</body>
</html>
胡飞 2011-07-28
  • 打赏
  • 举报
回复
兄弟,,,这个js 真的要好好优化了。(虽说这偏了题为了js的壮大我还是要说下。)
你这每次调用insertOption()时都会
var arr=new Array()
var date=new Array()
再加一个for (var i=0;i<arr.length;i++){} ;;(你这里应该是dete.length吧,虽说是一样长度的数组)
你if(before==date[i]){}后还在继续做for循环也不去终止一下。
if(i<=30){ }else{}为什么不能改成。

var len=arr.length;
if(before==date[i]){
//if(i<=30){
for(var j=0;j<7&&i+j<len;j++){
newOption = document.createElement('option');
//newOption.text = arr[i+j]; // ie下text不管用 FF下有这个属性
newOption.innerHTML = arr[i+j];
newOption.value=date[i+j];
after.appendChild(newOption); //用这个取代add dom通用
//after.add(newOption,null);
//}


顺便提一下, 在 JavaScript 1.6 里,javascript 数组增加了几个非常有用的方法: indexOf 、last IndexOf 、every、 filter、 forEach、 map、 some,其中前两个可以归为元素定位方法

ie6 可以自己写一个


if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(elt , from)
{
var len = this.length;

var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;

for (; from < len; from++)
{
if (from in this && this[from] === elt)
return from;
}
return -1;
};
}

87,909

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧