JS为什么会出这个错误"没有权限"

clon018 2008-12-24 03:36:45
有2个页面 主要实现的功能就是打开一个对话框 然后选择内容后把所选择的值传回给父窗体,现在出现得主要问题是点击子窗体"确定"按钮后,父窗下取不得值,并且
报JS错误说"没有权限",在子窗体中能够得到所选择得值,请高手帮忙看一下到底出什么问题了,小弟感激万分,下面是一些主要代码
父窗体页面

<%
Collection departs=(Collection)JspUtils.getDataInRequest(request,ManageUserAction.USER_DEPARTS_KEY);
%>

<form name="UserDepartsForm" action="<%=request.getContextPath()%>/manageUser.do?method=updateUserDeparts&userId=<%=(String)JspUtils.getDataInRequest(request,"userId")%>&<%=PagingTableHeader.PAGE_NUMBER_KEY%>=<%=JspUtils.getDataInRequest(request,PagingTableHeader.PAGE_NUMBER_KEY)%>" method="post">

<tr>
<td valign="bottom">所属部门:</td>
<td width="20" valign="bottom"> </td>
</tr>
<tr>
<select multiple name="departIds" style="width:300px" size="6">
<% Depart depart=null;
for(Iterator it=departs.iterator();it.hasNext();){
depart=(Depart)it.next();
%>
<option value="<%=depart.getId()%>"><%=depart.getDisplayName()%></option>
<% } %>
</select>
<input name="addUserDepartsButton" onClick="addUserDeparts()" type="button" class="button1" value=" 添加 ">


<script language="javascript">
var f=document.forms['UserDepartsForm'];
var departList=f.departIds;
function resetDepartList(){
if(departList.options.length==0)
f.delUserDepartsButton.setAttribute("disabled",true);
else
f.delUserDepartsButton.setAttribute("disabled",false);
}

function addUserDeparts(){
departList.newOptions=new Array();
openModalDialog('<%=request.getContextPath()%>/departDialog.do?method=multiSelect',departList,400,300);
for(var i=0;i<departList.newOptions.length;i++)
addListOption(departList,departList.newOptions[i]);
resetDepartList();
}

function addListOption(list,opt){
if(list && list.options && opt && opt.text){
for(var i=0;i<list.options.length;i++){
if(list.options[i].text==opt.text && list.options[i].value==opt.value)
return;
}
list.options[list.options.length++]=new Option(opt.text,opt.value,false,false);
}
}



子窗体页面

<%
Collection provinces=CommonsUtils.getRegionProvider(request).getAllProvinces();
%>
<script language="javascript">
var checks=new Array();
function selectDepart(check){
if(check.checked==false){
checks[check.name]=null;
checks.length--;
return true;
}else{
checks[check.name]=check;
checks.length++;
return true;
}
}
function doSelect(){
var nv=null;
for(var c in checks){
nv=checks[c].value.split(".");
window.dialogArguments.newOptions[window.dialogArguments.newOptions.length++]=new Option(nv[1],nv[0],false,false);
}
window.close();
}
</script>

<input type="button" class="button" onClick="doSelect()" value=" 确定 ">



...全文
904 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
clon018 2008-12-24
  • 打赏
  • 举报
回复
感谢楼上得解释
downloadingonline 2008-12-24
  • 打赏
  • 举报
回复
父窗体中
openModalDialog(' <%=request.getContextPath()%>/departDialog.do?method=multiSelect',departList,400,300);
这个方法里面departList参数是把父窗体的departList对象作为参数传到子窗体。
子窗体中
window.dialogArguments.newOptions[window.dialogArguments.newOptions.length++]=new Option(nv[1],nv[0],false,false);
是给父窗体的那个select对象增加一个option
clon018 2008-12-24
  • 打赏
  • 举报
回复
我的IE版本 是7.0得 应该不是这个问题
clon018 2008-12-24
  • 打赏
  • 举报
回复
我还有2个不明白得地方
父窗体中
openModalDialog('<%=request.getContextPath()%>/departDialog.do?method=multiSelect',departList,400,300);
这个方法里面departList参数是什么意思
子窗体中
window.dialogArguments.newOptions[window.dialogArguments.newOptions.length++]=new Option(nv[1],nv[0],false,false);
这个方法又是什么意思

是不是可以这样理解,子窗体中的这个方法把值赋给父窗体方法中的departList参数.从而父窗体就能得到子窗体所选择的值?
一直在线 等待高手请教! 不胜感激!!!!
batistuta211 2008-12-24
  • 打赏
  • 举报
回复
路过
  • 打赏
  • 举报
回复
你断点测试一下
还有就是检查一下你的IE 版本,有可能太低了
clon018 2008-12-24
  • 打赏
  • 举报
回复
没有权限情况很多。如JS跨域,
也可能是用了JS不支持的方法,
把var f=document.forms['UserDepartsForm'];
改为:var f=document.UserDepartsForm;试试


首先谢谢你,
改了效果还是一样。
clon018 2008-12-24
  • 打赏
  • 举报
回复
经过测试addUserDeparts()里面得alert都会执行,当调用addListOption()方法时,只会显示alert("进入addListOption()方法");后面得内容就不执行了
昨天也是在这个时候我以为是判断写得有问题,于是我就修改判断条件,但是效果还是一样,不知道为什么

function addUserDeparts(){
departList.newOptions=new Array();
alert("进入addUserDeparts(),准备开始弹出对话框");
openModalDialog('<%=request.getContextPath()%>/departDialog.do?method=multiSelect',departList,400,300);
for(var i=0;i<departList.newOptions.length;i++)
alert("进入循环");
addListOption(departList,departList.newOptions[i]);
resetDepartList();
}

function addListOption(list,opt){
alert("进入addListOption()方法");
if(list && list.options && opt && opt.text){
alert("进入addListOption方法第一个if");
for(var i=0;i<list.options.length;i++){
alert("进入addListOption方法第一个for");
if(list.options[i].text==opt.text && list.options[i].value==opt.value)
alert("进入addListOption方法第二个if");
return;
}
list.options[list.options.length++]=new Option(opt.text,opt.value,false,false);
}
}
lanzhengwu 2008-12-24
  • 打赏
  • 举报
回复
没有权限情况很多。如JS跨域,
也可能是用了JS不支持的方法,
把var f=document.forms['UserDepartsForm'];
改为:var f=document.UserDepartsForm;试试

81,090

社区成员

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

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