一个奇怪的JS错误

kjwind 2005-12-28 09:50:22
在调用一个JS函数时,出现奇怪的错误,函数如下:
function onClickSendAdd()
{ //把左边复选框中选中的内容添加到右边复选框中
var selSend = document.getElementById("send_sel");
if(content.content.selectedIndex == -1){//1111
return;
}
for(var i = 0; i < content.content.options.length; i++){
if(content.content.options[i].selected == true && content.content.options[i].org.id != ""){
var selectedOrg = content.content.options[i].org;
var newOpt = document.createElement("option");
newOpt.appendChild(document.createTextNode(selectedOrg.name));
newOpt.value = selectedOrg.id;
selSend.appendChild(newOpt);
}
}
//找出右边复选框中重复的纪录加以标记
var optToDel = new Array();
for(var i = 0; i < selSend.options.length; i++){
for(var j = i + 1; j < selSend.options.length; j++){
if(selSend.options[i].value == selSend.options[j].value){
optToDel.push(i);//alert("push i="+i+" optToDel[i]="+optToDel[i]);
break;
}
}
}
//删除右边重复选择的纪录
for(var i = 0; i < optToDel.length; i++){//2222
selSend.remove(optToDel[i]);//3333
alert("i="+i+" optToDel[i]="+optToDel[i]+" optToDel.length="+optToDel.length);
subArr(optToDel);
}
}

这个函数是在一个弹出窗口页面中调用的,现在用到该函数时老是弹出一个js脚本错误提示框:未指明的错误,但是只要在上面所标记的1111和2222之间任何一个位置加一个alert语句,alert什么内容都没关系,比如alert();就不会弹出什么脚本错误,一切运行正常,实在想不明白怎么回事,请高手指点!( 其中3333处的行如果注释掉,运行也一切正常,但这行也没什么错啊,alert的话参数值都显示正常的)
...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
DeluxWorld 2005-12-28
  • 打赏
  • 举报
回复
把完整代码贴出来看看呀
kjwind 2005-12-28
  • 打赏
  • 举报
回复
没人回答,真郁闷,为什么一个毫无关系的alert语句居然影响到脚本执行是否正确,真没道理!
kjwind 2005-12-28
  • 打赏
  • 举报
回复
不好意思,贴到这里格式都乱了
kjwind 2005-12-28
  • 打赏
  • 举报
回复
谢谢两位,这个错误可能是数据问题吧,左边的数据存在options完全相同的情况,如果昨天同时选中的有这样的相同的options,加到右边已选框做处理时就会出现脚本错误,否则一切正常的,不可理解的就是随便在删下拉框的options元素之前加一个alert语句,一切就OK,这点实在让人想不通,懒得管它,规整了下数据库的数据就不出现这个问题了
xjdawu 2005-12-28
  • 打赏
  • 举报
回复
执行oSelect.remove()时,options集合的序号是运行时变化的,如果试图增删下拉框的options集合中的指定的子元素,建议用子元素的引用而不是序号

87,907

社区成员

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

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