你这个问题有很多现成的代码,你上网找关键字“javascript tooltip”,结果会有一大堆。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了西宁免费建站欢迎大家使用!
自己做也不难,原理就是设置 label 的两个 style 属性:
visibility:hidden; /*不可见*/
position:absolute; /*绝对坐标*/
输入控件得到焦点(focus)的时候,取得该控件的绝对坐标(left, top),根据这两个值计算 label 的坐标,然后更新 lable 的 left 和 top,并且设置 visibility:visible 使其可见。输入控件失去焦点(blur)的时候,又设置 visibility:false 使其隐藏。
推荐用 jQuery, jQuery 有很多优秀的 tooltip 插件。
老兄,还是你自己找吧。就算别人找出来,你还要自己一点一点的研究,要不然根本不懂。他的什么都是用js来搞定。而且代码又那样,很杂乱。这个是一点点代码:
function(v){
Object.extend(v,{
href:v._getAttr,
src:v._getAttr,
type:v._getAttr,
action:v._getAttrNode,
disabled:v._flag,
checked:v._flag,
readonly:v._flag,
multiple:v._flag,
onload:v._getEv,
onunload:v._getEv,
onclick:v._getEv,
ondblclick:v._getEv,
onmousedown:v._getEv,
onmouseup:v._getEv,
onmouseover:v._getEv,
onmousemove:v._getEv,
onmouseout:v._getEv,
onfocus:v._getEv,
onblur:v._getEv,
onkeypress:v._getEv,
onkeydown:v._getEv,
onkeyup:v._getEv,
onsubmit:v._getEv,
onreset:v._getEv,
onselect:v._getEv,
onchange:v._getEv
});
其实思路大家都知道,只是想把所有的代码都找到。还是比较烦的。
用JavaScript隐藏控件的方法有两种,分别是通过设置控件的style的“display”和“visibility”属性。当style.display="block"或style.visibility="visible"时控件或见,当style.display="none"或style.visibility="hidden"时控件不可见。不同的是“display”不但隐藏控件,而且被隐藏的控件不再占用显示时占用的位置,而“visibility”隐藏的控件仅仅是将控件设置成不可见了,控件仍然占俱原来的位置。
function displayHideUI()
{
var ui =document.getElementById("bbs");
ui.style.display="none";
}
function displayShowUI()
{
var ui =document.getElementById("bbs");
ui.style.display="";//display为空的话会好使,为block会使后边的空间换行
}
function visibilityHideUI()
{
var ui =document.getElementById("bbs");
ui.style.visibility="hidden";
}
function visibilityShowUI()
{
var ui =document.getElementById("bbs");
ui.style.visibility="visible";
}
/script
值 描述
none 此元素不会被显示。
block 此元素将显示为块级元素,此元素前后会带有换行符。
inline 默认。此元素会被显示为内联元素,元素前后没有换行符。
inline-block 行内块元素。(CSS2.1新增的值)
list-item 此元素会作为列表显示。
run-in 此元素会根据上下文作为块级元素或内联元素显示。
compact CSS 中有值compact,不过由于缺乏广泛支持,已经从CSS2.1 中删除。
marker CSS 中有值marker,不过由于缺乏广泛支持,已经从CSS2.1 中删除。
table 此元素会作为块级表格来显示(类似table),表格前后带有换行符。
inline-table 此元素会作为内联表格来显示(类似table),表格前后没有换行符。
table-row-group 此元素会作为一个或多个行的分组来显示(类似tbody)。
table-header-group 此元素会作为一个或多个行的分组来显示(类似thead)。
table-footer-group 此元素会作为一个或多个行的分组来显示(类似tfoot)。
table-row 此元素会作为一个表格行显示(类似tr)。
table-column-group 此元素会作为一个或多个列的分组来显示(类似colgroup)。
table-column 此元素会作为一个单元格列显示(类似col)
table-cell 此元素会作为一个表格单元格显示(类似td和th)
table-caption 此元素会作为一个表格标题显示(类似caption)
inherit 规定应该从父元素继承display属性的值。
今天解决的问题是在jsp页面中给css定义的label.error的类一个id,然后通过控制id的可见性来实现收起div时清除js的提示信息。具体如下:
在准备界面的函数中var label1 = document.getElementById("label1");
$(document).ready(function() {
$(".flipp .span4").click(function() {
$(this).parent().next().toggle();
$(this).parent().parent().prevAll().find(".panel").hide();
$(this).parent().parent().nextAll().find(".panel").hide();
var label1 = document.getElementById("label1");
label1.style.display="none";
})
然后在jsp相应的地方加入:
label class="error" id="label1" for="currentPWD" generated="true" style="display:inline"/label
对于css定义的label.error类,可以使用$("label.error").removeAttr("style").attr("style", "display: none;");来实现如上的功能。。。。。而且,貌似也不用在地下相应的位置给label定义id值
前面说过为HTML元素添加自定义的属性,是通过手动在HTML控件中加上,其实可以在javascript中动态添加:如有一文本框:
复制代码
代码如下:
input
type="text"
id="txtInput"
name="txtInput"
value="自定义文本"
如想增加idvalue属性(值为”自定义值”),可以在javascript中这样写:
复制代码
代码如下:
var
txt
=
document.getElementById("txtInput");
txt.setAttribute("idvalue","自定义值");
setAttribute中第一个参数是指明自定义属性的名称,第二个参数是初始值
代码如下:
复制代码
代码如下:
html
head
title用javascript添加控件自定义属性/title
script
language="javascript"
function
addCustomAttribute()
{
var
txt
=
document.getElementById("txtInput");
txt.setAttribute("idvalue","自定义值");
}
function
showIdValue()
{
var
txt
=
document.getElementById("txtInput");
alert(txt.attributes["idvalue"].nodeValue);
}
/script
/head
body
onload="addCustomAttribute();"
input
type="text"
id="txtInput"
name="txtInput"
value="自定义文本"
input
type="button"
value="显示idValue"
onclick="showIdValue();"
/body
/html
就是一些用Javascript写好的功能,可能是有界面的,也可能是没有界面的。
比较常见的比如一些网页上有日期选择的效果,一般都是用所谓的javascript控件实现的。
可算新生事物,也不能算新生事物。Tree和日历这样的JS控件已经诞生了不知多少年繁衍了不知多少代了。但是大规模的使用控件来开发Web应用要数ASP.NET的诞生了。