自定义html title属性
转自网络,可直接copy使用。
在实际的开发过程中,如过不想新出明细的页面,就可以用title的属性把明细信息都让鼠标悬浮的时候显示出来,但title属性显示出来可能会影响本来页面的信息展示(覆盖原有信息),请结合实际的场景进行使用。
代码如下:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gbk">
<title>JS控制TITLE悬停效果-veryhuo.com</title>
<scripttype="text/javascript">
/**
*className类名
*tagnameHTML标签名,如div,td,ul等
*@returnArray所有class对应标签对象组成的数组
*@example
<divclass="abc">abc</div>
varabc=getClass('abc');
for(i=0;i<abc.length;i++){
abc[i].style.backgroundColor='red';
}
*/
functiongetClass(className,tagname){
//tagname默认值为'*',不能直接写成默认参数方式getClass(className,tagname='*'),否则IE下报错
if(typeoftagname=='undefined')tagname='*';
if(typeof(getElementsByClassName)=='function'){
returngetElementsByClassName(className);
}else{
vartagname=document.getElementsByTagName(tagname);
vartagnameAll=[];
for(vari=0;i<tagname.length;i++){
if(tagname[i].className==className){
tagnameAll[tagnameAll.length]=tagname[i];
}
}
returntagnameAll;
}
}
/**
*JS字符切割函数
*@paramsstring原字符串
*@paramswords_per_line每行显示的字符数
*/
functionsplit_str(string,words_per_line){
//空串,直接返回
if(typeofstring=='undefined'||string.length==0)return'';
//单行字数未设定,非数值,则取默认值50
if(typeofwords_per_line=='undefined'||isNaN(words_per_line)){
words_per_line=50;
}
//格式化成整形值
words_per_line=parseInt(words_per_line);
//取出i=0时的字,避免for循环里换行时多次判断i是否为0
varoutput_string=string.substring(0,1);
//循环分隔字符串
for(vari=1;i<string.length;i++){
//如果当前字符是每行显示的字符数的倍数,输出换行
if(i%words_per_line==0){
output_string+="<br/>";
}
//每次拼入一个字符
output_string+=string.substring(i,i+1);
}
returnoutput_string;
}
/**
*鼠标悬停显示TITLE
*@paramsobj当前悬停的标签
*
*/
functiontitleMouseOver(obj,event,words_per_line){
//无TITLE悬停,直接返回
if(typeofobj.title=='undefined'||obj.title=='')returnfalse;
//不存在title_show标签则自动新建
vartitle_show=document.getElementById("title_show");
if(title_show==null){
title_show=document.createElement("div");//新建Element
document.getElementsByTagName('body')[0].appendChild(title_show);//加入body中
varattr_id=document.createAttribute('id');//新建Element的id属性
attr_id.nodeValue='title_show';//为id属性赋值
title_show.setAttributeNode(attr_id);//为Element设置id属性
varattr_style=document.createAttribute('style');//新建Element的style属性
attr_style.nodeValue='position:absolute;'//绝对定位
+'border:solid1px#999999;background:#EDEEF0;'//边框、背景颜色
+'border-radius:2px;box-shadow:2px3px#999999;'//圆角、阴影
+'line-height:18px;'//行间距
+'font-size:12px;padding:2px5px;';//字体大小、内间距
try{
title_show.setAttributeNode(attr_style);//为Element设置style属性
}catch(e){
//IE6
title_show.style.position='absolute';
title_show.style.border='solid1px#999999';
title_show.style.background='#EDEEF0';
title_show.style.lineHeight='18px';
title_show.style.fontSize='18px';
title_show.style.padding='2px5px';
}
}
//存储并删除原TITLE
document.title_value=obj.title;
obj.title='';
//单行字数未设定,非数值,则取默认值50
if(typeofwords_per_line=='undefined'||isNaN(words_per_line)){
words_per_line=50;
}
//格式化成整形值
words_per_line=parseInt(words_per_line);
//在title_show中按每行限定字数显示标题内容,模拟TITLE悬停效果
title_show.innerHTML=split_str(document.title_value,words_per_line);
//显示悬停效果DIV
title_show.style.display='block';
//根据鼠标位置设定悬停效果DIV位置
event=event||window.event;//鼠标、键盘事件
vartop_down=15;//下移15px避免遮盖当前标签
//最左值为当前鼠标位置与body宽度减去悬停效果DIV宽度的最小值,否则将右端导致遮盖
varleft=Math.min(event.clientX,document.body.clientWidth-title_show.clientWidth);
title_show.style.left=left+"px";//设置title_show在页面中的X轴位置。
title_show.style.top=(event.clientY+top_down)+"px";//设置title_show在页面中的Y轴位置。
}
/**
*鼠标离开隐藏TITLE
*@paramsobj当前悬停的标签
*
*/
functiontitleMouseOut(obj){
vartitle_show=document.getElementById("title_show");
//不存在悬停效果,直接返回
if(title_show==null)returnfalse;
//存在悬停效果,恢复原TITLE
obj.title=document.title_value;
//隐藏悬停效果DIV
title_show.style.display="none";
}
/**
*悬停事件绑定
*@paramsobjs所有需要绑定事件的Element
*
*/
functionattachEvent(objs,words_per_line){
if(typeofobjs!='object')returnfalse;
//单行字数未设定,非数值,则取默认值50
if(typeofwords_per_line=='undefined'||isNaN(words_per_line)){
words_per_line=50;
}
for(i=0;i<objs.length;i++){
objs[i].onmouseover=function(event){
titleMouseOver(this,event,words_per_line);
}
objs[i].onmouseout=function(event){
titleMouseOut(this);
}
}
}
//DownloadsByhttp://www.veryhuo.com
//初始化,当页面onload的时候,对所有class="title_hover"的标签绑定TITLE悬停事件
window.onload=function(){
attachEvent(getClass('title_hover'),18);//行字数设定为18
}
</script>
</head>
<body>
<style>
tr{float:left;margin:050px;}
</style>
<table>
<tr>
<tdtitle="这个是默认的TITLE这个是默认的TITLE这个是默认的TITLE这个是默认的TITLE这个是默认的TITLE这个是默认的TITLE">鼠标悬停[原生版本]</td>
</tr>
<tr>
<tdtitle="这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE"
onmouseover="titleMouseOver(this,event,15);"onmouseout="titleMouseOut(this);">鼠标悬停[直接调用函数版本,设定行字数]</td>
</tr>
<tr>
<tdclass="title_hover"title="ABCTesterABCTesterABCTesterABCTesterABCTesterABCTesterABCTester">鼠标悬停[class控制版本]</td>
</tr>
<tr>
<tdtitle="这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE这个是JS实现悬停的TITLE"
onmouseover="titleMouseOver(this,event);"onmouseout="titleMouseOut(this);">鼠标悬停[直接调用函数版本,默认行字数]</td>
</tr>
</table>
</body>
</html><divstyle="text-align:center;margin:30px000;"><hrstyle="color:#999;height:1px;">如不能显示效果,请按Ctrl+F5刷新本页。</div>