<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">  
function appendElement(id)   
{     
var li = id.parentNode;
var div = document.createElement("div");
div.style.width="200";
div.style.height="80";
div.style.border="solid 1px #000000";
div.setAttribute("id","div1");
div.innerHTML="<textarea rows=\"2\" cols=\"10\" id=\"txaReserve\"></textarea><br /><input type=\"button\" value=\"确定\" />";
li.appendChild(div);
}
function body_closeDiv(){
var div1 = document.getElementById("div1");
if(div1){
var li = div1.parentNode;
li.removeChild(div1);
}
}
</script>  
<style type="text/css">
body,html{width:100%; height:100%;}
</style>
</head><body onmousedown="body_closeDiv();">
<ul><li>在哪呢?<a href="javascript:void(0);" onclick="appendElement(this);">回复</a></li>
<li>最近好吗?<a href="javascript:void(0);" onclick="appendElement(this);">回复</a></li></ul>
</body>
</html>

解决方案 »

  1.   

    事件被拦截了
    可以去掉body的onmousedown
    然后对于链接
    onclick="appendElement(this);"
    这个用时间冒泡让body来响应
      

  2.   

    都能点出一个DIV再点别的地方 关掉了 你要什么效果?
      

  3.   

    如一楼所说,你的事件被拦截了,根据dom元素 也就是html元素的优先级,你的body  有了 onmousedown这个事件 ,所以下面相同的事件必须等body执行完才可以。你说下你到底想实现什么样的效果,我想应该很简单可以做到的。
      

  4.   

    问题补充:当点击下面回复链接时,只清除了div但没有打开新的div,我想实现的效果是点击body时清除div,但点击其他回复链接时清除旧的div打开新的div……
      

  5.   

    那为什么上面那个回复链接就正常呢?点击它时就能先触发body的click事件,然后再去触发链接的click事件?不明白
      

  6.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script type="text/javascript">   
    function appendElement(id)   
    {   
    var li = id.parentNode;
    var div = document.createElement("div");
    div.style.width="200";
    div.style.height="80";
    div.style.border="solid 1px #000000";
    div.setAttribute("id","div1");
    div.innerHTML="<textarea rows=\"2\" cols=\"10\" id=\"txaReserve\"></textarea><br /><input type=\"button\" value=\"确定\" />";
    document.body.appendChild(div);
    }
    function body_closeDiv(){
    var div1 = document.getElementById("div1");
    if(div1){
    var li = div1.parentNode;
    document.body.removeChild(div1);
    }
    }
    </script>   
    <style type="text/css">
    body,html{width:100%; height:100%;}
    </style>
    </head><body onmousedown="body_closeDiv();">
    <ul><li>在哪呢?<a href="javascript:void(0);" onclick="appendElement(this);">回复</a></li>
    <li>最近好吗?<a href="javascript:void(0);" onclick="appendElement(this);">回复</a></li></ul>
    </body>
    </html>这样的话 两个都能用,你那个当先点第一个时加入了DIV把第二个<a>挤跑了 当你点第二个时 冒泡 先把div弄没了 这时<a>换地方了  你点的那个位置找不到<a>也就没点上<a> 可以这样解释么?具体原理还请高人指点 我感觉是这样的