想写一个仿人人的回复框,可以点击一下弹开,然后点击文本框以外的地方,文本框可以收起,请问该如何实现呢?
解决方案 »
- 难于上青天 双ul asp.net 如何输出 啊
- removeChild方法,参数无效???
- 如何判断动态变量Eval("a"+b)是否存在?
- 关于javascript执行过程的问题?
- 用正则表达式如何获得当前页面的名字?
- 焦点在text框中,如何控制回车和提交做同样操作,也要求对页面的项目进行检查
- 求助:如何在javascript中通过代码保留一个数字小数点后指定位数
- 无条件送您50元,人人有份!(绝对真实)
- 屏蔽图片右键菜单,但是还是要能捕捉到右键点击的时间,触发一个javascipt函数怎么办?
- 如何使下拉列表可以写进去新值?
- 求助:根据屏幕宽度改变div的宽度js怎么写?
- 下拉框特效,去掉form后,可以正常显示,加上就不行了,请问原因,如何修改?
<div id="dvReply" style="display:none"><textarea></textarea><br /><input type="button" value="回复" /></div>
<script type="text/javascript">
function showReply(e) {
var dv = document.getElementById('dvReply');
dv.style.display = dv.style.display == 'none' ? 'block' : 'none';
if (e.stopPropagation) e.stopPropagation();
e.cancelBubble = true;
return false;
}
document.onclick = function (e) {
e = e || window.event;
var o = e.target || e.srcElement;
if (o.id != 'dvReply' && o.parentNode.id != 'dvReply') document.getElementById('dvReply').style.display = 'none';
}
</script>
var dv = document.getElementById('dvReply'); //获取回复容器
dv.style.display = dv.style.display == 'none' ? 'block' : 'none'; //根据状态判断如果原来隐藏就显示出来,显示的就隐藏起来,切换状态
if (e.stopPropagation) e.stopPropagation(); //firefox阻止事件冒泡
e.cancelBubble = true; //IE的
return false; //阻止执行a的href链接到#
}
document.onclick = function (e) {//给document注册点击事件,以便获取到当前点击对象
e = e || window.event;//获取事件对象
var o = e.target || e.srcElement; //获取点击到的对象,w3c浏览器和ie不一样,所以要获取2个属性取或等到实际的对象
//下面就是判断点击对象是否是回复容器或者回复容器里面的子对象的,如果是就不隐藏回复容器,不是则隐藏
if (o.id != 'dvReply' && o.parentNode.id != 'dvReply') document.getElementById('dvReply').style.display = 'none';
}
<a href="#" onclick="return showReply(event)">回复</a>
<div id="dvReply" style="display:none"><div><div><div><textarea></textarea><br /><input type="button" value="回复" /></div></div></div></div>
<script type="text/javascript">
function showReply(e) {
var dv = document.getElementById('dvReply');
dv.style.display = dv.style.display == 'none' ? 'block' : 'none';
if (e.stopPropagation) e.stopPropagation();
e.cancelBubble = true;
return false;
}
function isContainer(o, pNodeId) {
if (o.id == pNodeId) return true;
while (o = o.parentNode) if (o.id == pNodeId) return true;
return false;
}
document.onclick = function (e) {
e = e || window.event;
var o = e.target || e.srcElement;
if (!isContainer(o, 'dvReply')) document.getElementById('dvReply').style.display = 'none';
}
</script>