您的位置:首页 > 其它

关于csdn的给分效果的再次实现!

2005-09-27 08:10 543 查看
上次的随笔有个问题,对firefox不支持,而且如果是用datagrid或者datalist或者repeater绑定的文本框就会出现问题.下面是新代码:
<div id="pop" style="DISPLAY: none; FONT-SIZE: 12px; BACKGROUND: #ffff00; WIDTH: 120px; POSITION: absolute"></div>
<script language="javascript">
var cen = document.getElementById("pop");//得到那个提示框
function fen(e)
{
//通过隐藏字段得到总分数
var zong = parseInt((document.getElementById("hiddenMark")).value);
var obj = document.getElementById("Table2");//得到那个包含repeater的表格
var objs = obj.getElementsByTagName("INPUT");//得到表格里所有输入框
var gei = 0;//定义已经给了多少分
for(var i=0;i<objs.length;i++)
{
gei = gei+parseInt(objs[i].value);//循环得到所有已经给的分
}
var n = zong - gei;//得到还有多少分可以给
//如果多给了分就让提示层的背景红色

cen.style.background = (n<0) ? "#ff0000" : "#ffff00";
cen.innerHTML = "该问题总分值:" + zong + "还可以给的分:" + n;
return n;
}

//当鼠标移到这个给分框的时候执行这个函数
function cc(e)
{
var a = e.id;//首先根据传入的对象获得他的id
var b = document.getElementById(a);//再根据id获得这个对象
b.select();//让取得的这个输入框全部选择,当然也获得了焦点,必须要这样才能够让他获得焦点
fen(e);//计算分数
var ttop = b.offsetTop;//获得输入框的上面偏移
var tleft= b.offsetLeft;//获得输入框的左偏移量
var h = b.clientHeight;//获得输入框的高度
var w = e.clientWidth;//获得输入框的宽度
while (b = b.offsetParent){ttop += b.offsetTop; tleft += b.offsetLeft;}
cen.style.top = ttop + h;
cen.style.left= tleft + w - cen.clientWidth;
cen.style.display = "";
}

//当鼠标移开的时候执行的函数
function out(e)
{
cen.style.display = "none"; //提示层隐藏
}
</script>
</body>

经过测试在firefox下面一切显示正常!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: