while(temp2.length>temp.length){
temp2.options[temp2.length]=null
}
问题出在这里。当temp2.length>temp.length成立时,你没有在循环内部减小temp2.length,所以条件一直成立,循环一直执行,因此浏览器会挂掉。
用下面的代码可以看出效果。
var i=0;
while(temp2.length>temp.length){
i++;
status=i;
if(i>100) return;
temp2.options[temp2.length]=null
}
temp2.options[temp2.length]=null
}
问题出在这里。当temp2.length>temp.length成立时,你没有在循环内部减小temp2.length,所以条件一直成立,循环一直执行,因此浏览器会挂掉。
用下面的代码可以看出效果。
var i=0;
while(temp2.length>temp.length){
i++;
status=i;
if(i>100) return;
temp2.options[temp2.length]=null
}
解决方案 »
- 关于table树
- 如何实现关闭IE窗口前弹出提示?
- 将回调函数的参数值取出来
- Web系统中如何实现控制并口和串口,还有USB口
- 我是一个明年即将本科毕业的实习生,感到很困惑,不知道该向哪方向努力
- 一个日历代码,这论坛上找到的,只能在IE下面用,FF不行,可惜我看不懂这段代码,所以请大大们帮我看下
- javascript中cookies的操作
- 问一个取url值的问题
- http://www.csdn.net/news/newstopic/4/4229.shtml
- Uncaught TypeError: Cannot read property 'top' of undefined
- 请教:如题
- 点击按钮指定主窗体里某一iframe的src为某一页面,在加载完毕后,在主窗口里获得这个iframe里的页面的内容,能实现吗?如何实现?
var menuInit = [['1', '酒家', false], ['2', '集市', false], ['3', '学堂', false],
['4', '校场', false], ['5', '农业', false], ['6', '铁匠铺', false],
['7', '药铺', false], ['8', '监狱', false], ['9', '督府', false],
['10', '自宅', false], ['11', '寺庙', false], ['12', '港口', false],
['13', '驻军营', false], ['15', '太守府', false], ['17', '白马山', false],
['59', '派系', false], ['74', '都尉府', false], ['82', '仓库', false],
['84', '旅店', false], ['86', '集市', false], ['87', '自己', false], ['88', '任务', false]]
var menuArr = [
[['8', '监狱', false], ['9', '督府', false], ['15', '太守府', false], ['74', '都尉府', false]],
[['1', '酒家', false], ['2', '集市', false], ['3', '学堂', false], ['5', '农业', false],
['6', '铁匠铺', false], ['7', '药铺', false], ['11', '寺庙', false],
['12', '港口', false], ['59', '派系', false], ['82', '仓库', false],
['84', '旅店', false], ['86', '集市', false]], [['4', '校场', false], ['13', '驻军营', false]],
[['10', '自宅', false], ['87', '自己', false], ['88', '任务', false]], [['17', '白马山', false]]]
function scene_id_multi_select()
{
document.all.scene_id.value = '';
var select_options = document.all.scene_id_select.options;
var enable_multi_select = true;
for(var i=0;i<select_options.length;i++)
{
if(select_options[i].selected == true){
if(select_options[i].value == '0') continue;
document.all.scene_id.value += (document.all.scene_id.value.length>0?',':'')+select_options[i].value
}
}
if(document.all.scene_id.value.length>0){
if(select_options[0].value=='0')
select_options[0].selected=false;}
else{
document.all.scene_id.value='0'
}
}
function Cha_Select(temp,child){
var temp2 = document.all(child)
temp2.options[0]=new Option('无具体场景限制',0)
temp2.options[1]=new Option('主场景','-1')
alert(temp.length+' '+temp)//执行到这里为止都正确
for(var i = 0; i < temp.length; i++){ //这里应该是双层循环
alert(temp.length+' '+temp)//当选择‘特殊机构’执行到这里浏览器会挂掉
return
temp2.options[i+2]=new Option(temp[i][1],temp[i][0])
if( temp[i][2] ) temp2.options[i+2].selected = true
}
while(temp2.length>temp.length){ //这里的while如果执行进去就是个死循环啦
temp2.options[temp2.length]=null
}
}
function selectValue(obj, child) {
var v = new Array();
var vv = new Array();
for( i= 0; i<obj.options.length; i++ ) {
if( obj.options[i].selected ) {
if( obj.options[i].value == '-1' ) {
v = menuInit; // v是二维数组
break;
}else{
var vv = menuArr[obj.options[i].value]; //此处返回一个二维数组
if(vv) v = v.concat(vv.slice(0,vv.length)); //如果选择多项, 经过运算后的v可能是三维数组
/*
var len = v.length
var vv = menuArr[obj.options[i].value]
if( vv != undefined ) {
for( j = 0; j< vv.length; j++ ) {
v[v.length] = vv[j]
}
}*/
}
}
}
Cha_Select(v,child) //参数v的维数不确定,下面的函数就很难处理了. 可以把menuInit改成三维
}
</script><table border="1">
<tr class="secondalt">
<td width="50%" valign="top">出现场景类型限制<br>NPC只在选中的场景类型中出现</td>
<td>
<select name="scene_type[]" multiple size=8 onchange="selectValue(this, 'scene_id_select')">
<option value="-1" selected class="">无场景类型限制</option>
<option value="0" class="">政府机构</option>
<option value="1" class="">民用设施</option>
<option value="2" class="">军事设施</option>
<option value="3" class="">其它(自宅等)</option>
<option value="9" class="">特殊机构</option>
</select>
</td>
</tr>
<input type="hidden" name="scene_id" value="0">
<tr class="firstalt">
<td width="50%" valign="top">出现具体场景限制<br>NPC只在选中的具体场景中出现</td>
<td>
<select name="scene_id_select" onchange="scene_id_multi_select()" multiple size=8 >
<option value="0" selected class="">无具体场景限制</option>
<option value="-1" class="">主场景</option>
<option value="1" class="">酒家</option>
<option value="2" class="">集市</option>
<option value="3" class="">学堂</option>
<option value="4" class="">校场</option>
<option value="5" class="">农业</option>
<option value="6" class="">铁匠铺</option>
<option value="7" class="">药铺</option>
<option value="8" class="">监狱</option>
<option value="9" class="">督府</option>
<option value="10" class="">自宅</option>
<option value="11" class="">寺庙</option>
<option value="12" class="">港口</option>
<option value="13" class="">驻军营</option>
<option value="15" class="">太守府</option>
<option value="17" class="">白马山</option>
<option value="59" class="">派系</option>
<option value="74" class="">都尉府</option>
<option value="82" class="">仓库</option>
<option value="84" class="">旅店</option>
<option value="86" class="">集市</option>
<option value="87" class="">自己</option>
<option value="88" class="">任务</option>
</select>
</td>
</tr>
</table>
总之,问题多多,设计上就有问题,所以代码无法执行,不认识到设计上的错误,再怎么改代码也没有.
改为-》temp2.remove(temp2.length-1)
另发现你虽然有alert出其他的选项,不过你没有改变temp2的长度。
temp2.options[temp.length+2]=null
}经过热心肠的人提醒,把错误找出来了,现在改成这样子才是最简单和是我要的东西上。
谢谢了。。