纯JavaScript工具提示

纯JavaScript工具提示,javascript,tooltip,Javascript,Tooltip,我试图用纯JavaScript制作一个工具提示,显示在悬停上。与将鼠标悬停在配置文件名称上的堆栈溢出一样,将显示div 我尝试使用onmouseover,onmouseout并添加了setTimeout,让用户有几秒钟的时间在工具提示内容上移动鼠标。但它并不像我想的那样起作用 与使用任何库相比,我更喜欢纯JavaScript。有人能帮我吗 这就是我在纯JavaScript中所做的 HTML JavaScript var name = document.getElementsByclassNam

我试图用纯JavaScript制作一个工具提示,显示在
悬停
上。与将鼠标悬停在配置文件名称上的堆栈溢出一样,将显示
div

我尝试使用
onmouseover
onmouseout
并添加了
setTimeout
,让用户有几秒钟的时间在工具提示内容上移动鼠标。但它并不像我想的那样起作用

与使用任何库相比,我更喜欢纯JavaScript。有人能帮我吗


这就是我在纯JavaScript中所做的

HTML

JavaScript

var name = document.getElementsByclassName("name");
    var tp = document.getElementsByclassName("tooltip");

    function show(){
        tp.style.display="block";
    }
    function hide(){
        tp.style.display="";
    }
即使是$(document).ready,也很难在纯JS中实现。请参见此处:

所以我使用了一个简单的版本:

window.addEventListener("load", function () {
    var couponcodes = document.getElementsByClassName("couponcode");
    for (var i = 0; i < couponcodes.length; i++) {
        couponcodes[i].addEventListener("mouseover", function () {
            var coupontooltip = this.getElementsByClassName("coupontooltip")[0];
            coupontooltip.removeAttribute("style");
        });
        couponcodes[i].addEventListener("mouseout", function () {
            var coupontooltip = this.getElementsByClassName("coupontooltip")[0];
            coupontooltip.style.display = "none";
        });
    }
});
window.addEventListener(“加载”,函数(){
var couponcodes=document.getElementsByClassName(“couponcode”);
对于(变量i=0;i

不含JavaScript的解决方案 这使用CSS伪悬停来设置隐藏元素的显示。“显示无”不需要在样式中,也不需要在元素上,这样就可以在悬停时覆盖它

HTML:

<div class="couponcode">First Link
    <span class="coupontooltip">Content 1</span> <!-- UPDATED -->
</div>

<div class="couponcode">Second Link
    <span class="coupontooltip"> Content 2</span> <!-- UPDATED -->
</div>
.couponcode:hover .coupontooltip { /* NEW */
    display: block;
}


.coupontooltip {
    display: none;  /* NEW */
    background: #C8C8C8;
    margin-left: 28px;
    padding: 10px;
    position: absolute;
    z-index: 1000;
    width:200px;
    height:100px;
}

.couponcode {
    margin:100px;
}
<div class = "name" onmouseover="show(this)" onmouseout="hide(this)">  <!-- added "this" 2 times -->
示例:

<div class="couponcode">First Link
    <span class="coupontooltip">Content 1</span> <!-- UPDATED -->
</div>

<div class="couponcode">Second Link
    <span class="coupontooltip"> Content 2</span> <!-- UPDATED -->
</div>
.couponcode:hover .coupontooltip { /* NEW */
    display: block;
}


.coupontooltip {
    display: none;  /* NEW */
    background: #C8C8C8;
    margin-left: 28px;
    padding: 10px;
    position: absolute;
    z-index: 1000;
    width:200px;
    height:100px;
}

.couponcode {
    margin:100px;
}
<div class = "name" onmouseover="show(this)" onmouseout="hide(this)">  <!-- added "this" 2 times -->

跟进:

<div class="couponcode">First Link
    <span class="coupontooltip">Content 1</span> <!-- UPDATED -->
</div>

<div class="couponcode">Second Link
    <span class="coupontooltip"> Content 2</span> <!-- UPDATED -->
</div>
.couponcode:hover .coupontooltip { /* NEW */
    display: block;
}


.coupontooltip {
    display: none;  /* NEW */
    background: #C8C8C8;
    margin-left: 28px;
    padding: 10px;
    position: absolute;
    z-index: 1000;
    width:200px;
    height:100px;
}

.couponcode {
    margin:100px;
}
<div class = "name" onmouseover="show(this)" onmouseout="hide(this)">  <!-- added "this" 2 times -->
如果您需要支持非常旧的浏览器,则需要在鼠标进入div时向外部元素添加一个类,并在鼠标离开时删除该类


编辑 您的代码不起作用,因为什么是tp?是元素的集合,您将其视为一个。您需要做的是传入对元素的引用

HTML:

<div class="couponcode">First Link
    <span class="coupontooltip">Content 1</span> <!-- UPDATED -->
</div>

<div class="couponcode">Second Link
    <span class="coupontooltip"> Content 2</span> <!-- UPDATED -->
</div>
.couponcode:hover .coupontooltip { /* NEW */
    display: block;
}


.coupontooltip {
    display: none;  /* NEW */
    background: #C8C8C8;
    margin-left: 28px;
    padding: 10px;
    position: absolute;
    z-index: 1000;
    width:200px;
    height:100px;
}

.couponcode {
    margin:100px;
}
<div class = "name" onmouseover="show(this)" onmouseout="hide(this)">  <!-- added "this" 2 times -->
修复原始代码 我在找类似的东西,我看到了这一页。 它对我有帮助,但我必须修复你的代码,才能让它工作。我想这就是你尝试过的。 您必须根据对象的“ID”参照对象。 以下是我所做的工作,它是有效的:

HTML

JS


对于非自定义工具提示,您只需将要在工具提示中显示的消息添加到主
div的title属性中即可。就这样,

<div class = "name" onmouseover="show()" onmouseout="hide()" title="PROFILE DETAILS">

这样就不需要添加
onmouseover
onmouseout
事件处理程序。

document.addEventListener(“mousemove”,函数(e){
如果(e.target.id!=“”){
e、 target.title=“#”+e.target.id;
}
}); 
随机的东西

更多随机的东西
为什么要使用JavaScript?纯CSS可以工作…在纯js中检查此链接我需要使用转换使内容停留几秒钟,这在跨浏览器中没有帮助我不想要jQuery我需要纯JavaScript我做了并在JSFIDLE中检查了它,但它不工作如果我想在工具脚本中使用ajax从数据库获取内容这是一个优雅的解决方案,值得更多的投票。小提琴太棒了+1@MemetOlsen,我喜欢这个工具提示。有没有办法将工具提示移动到控件的右边缘?我知道它使用的是左边距,但有没有办法,比如说从输入框的最右边开始?
:hover>。coupontoltip
可以让你将工具提示放在任何东西里面。