div与selec的问题,急,在线等

cynthiabx 2008-06-12 08:55:17
为了解决div遮挡select的问题,我使用了用iframe遮挡的方法,由于div是在脚本中生成,所以iframe我也在脚本中生成,我要实现的效果是,当鼠标在div上移走时,iframe也同时消失,代码如下,红色代码部分是重点,我在写下下述代码之后,实现的效果是当第一次点击按钮弹出div时,鼠标移动效果是好用的(也就是移出时div与iframe同时消失),但是当我在不关闭页面的情况下,重新点击按钮,再次弹出div时,就会报如下的错:
出现了运行时错误
是否要进行调试
行:0
错误:'document.all(...).style'为空或不是对象

请高手指教,万分感谢,谢谢
代码:
var strCurrentButtonAction = parent.document.all("DivAppCommentWindow").all.namedItem("WindowHeadName").innerText;
if(strCurrentButtonAction == "")
return;
var strAction = GetCommentType(strCurrentButtonAction);

var arrayComment = commentArray[strAction];
if(arrayComment == "" || arrayComment == undefined)
{
alert("<%=CommonResource.GetValue(CookiesManager.GetInfo(CookiesNaming.LOGON_REGION),2309)%>");
return;
}

//构建显示Table控件

var strComment = "<table id='TableComment' class='TableDefaultComment'><tr><td height='5px'></td></tr>";
for(i = 0;i < arrayComment.length;i++)
{
strComment = strComment + "<tr onmouseover=\"javascript: this.className='CommentMouseOver';\" onmouseout=\"javascript: this.className='';\" ><td style='border-bottom:solid #c7c7c7 1px'><span ";
strComment = strComment + "onclick=\"javascript:document.all('txtApproveNote').value = this.nextSibling.innerText; document.all('DefaultComment').style.display='none';\"";
strComment = strComment + "class='CommentTip' style='padding-left:8px;padding-right:5px;' onmouseover='this.title=this.nextSibling.innerText;'>";
strComment = strComment + arrayComment[i].replace(/<br>/g,"\r\n");
strComment = strComment + "</span>";
strComment = strComment + "<span style='display:none' id='"+arrayComment.length+"'>" + arrayComment[i] + "</span>"
strComment = strComment + "</td></tr>";
}
strComment = strComment + "<tr><td height='10px'></td></tr></table>";

//填充到DIV并显示
var objPopWindow = parent.document.getElementById("DefaultComment");
if (objPopWindow == null)
{
var strPopWindowContainer = "<div id='DefaultComment' style='z-index:100;position:absolute;' class='DivDefaultComment' onmouseout='javascript:this.style.display=\"none\";document.all(\"DivShim\").style.display=\"none\";'";
strPopWindowContainer = strPopWindowContainer + "onmouseover='javascript:this.style.display=\"block\";document.all(\"DivShim\").style.display=\"block\";'>";
objPopWindow = parent.document.createElement(strPopWindowContainer);
parent.document.body.insertBefore(objPopWindow);
}
bjPopWindow.innerHTML = strComment;
objPopWindow.style.position = "absolute";
objPopWindow.style.left = 450;
objPopWindow.style.top = 205;
objPopWindow.style.width = 450;
objPopWindow.style.height = 165;
objPopWindow.style.overflowX = "visible";
objPopWindow.style.display = "block";

var test = "<iframe id=\"DivShim\" src=\"about:blank\" onmouseout='this.style.display=\"none\"' onmouseover='this.style.display=\"block\"' scrolling=\"no\" frameborder=0 style=\"position:absolute; top:0px; left:0px; display:none;\"></iframe>"
var objc = parent.document.createElement(test);

parent.document.body.insertBefore(objc);

objc.style.width = objPopWindow.offsetWidth;
objc.style.height =objPopWindow.offsetHeight;
objc.style.top = objPopWindow.style.top;
objc.style.left =objPopWindow.style.left;
objc.style.zIndex = objPopWindow.style.zIndex-1
objc.style.display = "block";
...全文
101 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cynthiabx 2008-06-12
  • 打赏
  • 举报
回复
up up
cynthiabx 2008-06-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hengyan 的回复:]
document.all(...).style用到的地方不指一处,你确定是红色部分出现的错误吗?
[/Quote]

我确定,因为我去掉该红色部分,就不会报错了。
yilanwuyu123 2008-06-12
  • 打赏
  • 举报
回复
mark UP
hengyan 2008-06-12
  • 打赏
  • 举报
回复
document.all(...).style用到的地方不指一处,你确定是红色部分出现的错误吗?
cynthiabx 2008-06-12
  • 打赏
  • 举报
回复
我将
var test = "<iframe id=\"DivShim\" src=\"about:blank\" onmouseout='this.style.display=\"none\"' onmouseover='this.style.display=\"block\"' scrolling=\"no\" frameborder=0 style=\"position:absolute; top:0px; left:0px; display:none;\"></iframe>"
var objc = parent.document.createElement(test);

parent.document.body.insertBefore(objc);

objc.style.width = 450; //objPopWindow.offsetWidth;
objc.style.height =165;//objPopWindow.offsetHeight;
objc.style.top = 205;//objPopWindow.style.top;
objc.style.left =450;//objPopWindow.style.left;
objc.style.zIndex =99;
//IfrRef.style.backgroundcolor = "black";
objc.style.display = "block";
这段代码放到了div创建的前面,但还是报同样的错,请指教
cynthiabx 2008-06-12
  • 打赏
  • 举报
回复
因为这是点击按钮事件的javascript脚本代码,我也试过将iframe创建语句放到div生成语句之前,也会报同样的错误,请问可能的原因是什么呢?
ldb5736030 2008-06-12
  • 打赏
  • 举报
回复
同意 1楼的观点 你没有输出id为DivShim的 iframe 怎么调用document.all(\"DivShim\").style.display=\"block\";
xinyun80 2008-06-12
  • 打赏
  • 举报
回复
up
zpcoder 2008-06-12
  • 打赏
  • 举报
回复
顺序不对。要先输出iframe 之后。才能用 脚步本 document.all(...).style
cynthiabx 2008-06-12
  • 打赏
  • 举报
回复
问题已经解决
var objIframe = parent.document.getElementById("DivShim");
if (objIframe == null)
{
var test = "<iframe name=\"DivShim\" id=\"DivShim\" src=\"about:blank\" scrolling=\"no\" frameborder=0 style=\"position:absolute; top:0px; left:0px; display:none;\"></iframe>"
var objIframe = parent.document.createElement(test);

parent.document.body.insertBefore(objIframe);

objIframe.style.width = 450; //objPopWindow.offsetWidth;
objIframe.style.height =165;//objPopWindow.offsetHeight;
objIframe.style.top = 205;//objPopWindow.style.top;
objIframe.style.left =450;//objPopWindow.style.left;
objIframe.style.zIndex =99;
objIframe.style.display = "block";
//IfrRef.style.backgroundcolor = "black";
}
else
{
objIframe.style.display = "block";
}
相关iframe脚本改成如上即可,还是非常谢谢大家的帮忙。
SELECT * FROM ".tname('project')." WHERE `father` = '$pro_id'"; $pro_list = $db->getAll($sql); $sql = "SELECT pro_name, father, pro_id FROM ".tname('project')." WHERE `pro_id` = '$pro_id'"; $pro_info = $db->getRow($sql); if(!($_SESSION['supe_username'] and (($_SESSION['supe_project']!=$pro_info['pro_id'] ? $_SESSION['supe_project']==$pro_info['father'] : 1) or $_SESSION['supe_type']==-1))) { goto("login.php?pro_id=$pro_id"); } $sql = "SELECT pro_name FROM ".tname('project')." WHERE `pro_id` = '$pro_id'"; $pro_name = $db->getOne($sql); if($bug_id) { $sql = "select * from ".tname('bug')." where id='$bug_id'"; $bug = $db->getRow($sql); } if($_POST['submit']) { if($_POST['bug_id']) { if($_POST['pro_id']) { $pro_id = $_POST['pro_id']; } $sqlarr = array( 'pro_id' => $pro_id, 'title' => $_POST['title'], 'quick' => $_POST['quick'], 'bug' => $_POST['bug'] ); updatetable('bug', $sqlarr, "id='$_POST[bug_id]'"); } else { if($_POST['pro_id']) { $pro_id = $_POST['pro_id']; } $sqlarr = array( 'pro_id' => $pro_id, 'name' => $_SESSION['supe_username'], 'title' => $_POST['title'], 'quick' => $_POST['quick'], 'bug' => $_POST['bug'], 'dateline' => NOW ); inserttable('bug', $sqlarr); } goto("bug_list.php?pro_id=$pro_id"); } ?> <?=$_CFG['site_name']?> <script type="text/javascript" charset="utf-8" src="includes/editer/kindeditor.js"> KE.show({ id : 'bug', cssPath : './css/editer.css', items : [ 'undo', 'redo', 'fontname', 'fontsize', 'textcolor', 'bgcolor', 'bold', 'italic', 'underline', 'removeformat', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist', 'insertunorderedlist', 'image', 'source'] }); function checkuser(frm) { with(frm) { if (title.value.length < 1) { alert('标题不能为空'); title.focus(); return false; } } } <div class="block"> <div class="header"> <div style="height:50px; padding:3px 10px; background:#006CC5; color:#ffffff;"> <div>,欢迎您! 用户组: 退出div> <div class="pro_name">div> div> <div class="line_gray white"> 首页 >> >> 发布问题 div> div>
发布人:
项目选择: <select name="pro_id"> select>
标题:
迫切度: <select name="quick"> select>
问题
div>

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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