Javascript代码中的错误

Javascript代码中的错误,javascript,html,Javascript,Html,好的,当我将鼠标悬停在[3]上时,它会显示“sometext2”,而它应该显示“sometext3”。[2] [3]在同一页上。 我确实在中添加了一个快速调试,以查看它是否通过以下操作拾取了错误的innerHTML: if(e.target.id == "cited"){ alert(e.target.innerHTML); if (document.getElementById(e.target.id).innerHTML == "[1]") {

好的,当我将鼠标悬停在[3]上时,它会显示“sometext2”,而它应该显示“sometext3”。[2] [3]在同一页上。 我确实在中添加了一个快速调试,以查看它是否通过以下操作拾取了错误的innerHTML:

   if(e.target.id == "cited"){
        alert(e.target.innerHTML);
        if (document.getElementById(e.target.id).innerHTML == "[1]") {
            display = "sometext1";  
        }
        else if (document.getElementById(e.target.id).innerHTML == "[2]") {
            display = "sometext2";
        }
        else if (document.getElementById(e.target.id).innerHTML == "[3]") {
            display = "sometext3";
        }
当我在警告消息中悬停时,它会显示正确的提示,但我不知道为什么它会显示错误的工具提示。有人帮忙吗

alert(e.target.innerHTML);
document.onmousemove=函数(e)
{
//e.target、e.srcElement和e.toElement包含所单击的元素。
var x=e.pageX;
var y=e.pageY;
var显示;
如果(e.target.id==“引用”){
//警报(e.target.innerHTML);
if(document.getElementById(e.target.id).innerHTML==“[1]”){
display=“sometext1”;
}
else if(document.getElementById(e.target.id).innerHTML==“[2]”){
display=“sometext2”;
}
else if(document.getElementById(e.target.id).innerHTML==“[3]”){
display=“sometext3”;
}
document.getElementById(“工具提示”).style.top=y-50+“px”;
document.getElementById(“工具提示”).style.left=x+“px”;
document.getElementById(“工具提示”).style.visibility=“可见”;
document.getElementById(“工具提示”).innerHTML=“”+显示+”

”; } 否则{ document.getElementById(“工具提示”).style.visibility=“隐藏”; }
一个问题似乎是同一页面上有多个id相同的元素。从代码中,似乎至少有三个id为
的元素被引用了


如果要引用多个元素,应使用类。

一个问题似乎是同一页上有多个元素具有相同的id。从代码中,似乎至少有三个元素引用了id

如果要引用多个元素,应使用类。

修复它的错误方法:

    document.onmousemove = function(e)
{
    // e.target, e.srcElement and e.toElement contains the element clicked.
    var x = e.pageX;
    var y = e.pageY;
    var display;
    if(e.target.id == "cited"){
    //  alert(e.target.innerHTML);
        if (document.getElementById(e.target.id).innerHTML == "[1]") {
            display = "sometext1";  
        }
        else if (document.getElementById(e.target.id).innerHTML == "[2]") {
            display = "sometext2";
        }
        else if (document.getElementById(e.target.id).innerHTML == "[3]") {
            display = "sometext3";
        }
        document.getElementById("toolTip").style.top = y-50+"px";
        document.getElementById("toolTip").style.left = x+"px";
        document.getElementById("toolTip").style.visibility = "visible";
        document.getElementById("toolTip").innerHTML = "<p>"+display+"</p>";
    }
    else {
        document.getElementById("toolTip").style.visibility = "hidden"; 
    }
您可以将HTML更改为:

$('.cited').mousemove(function(e) {
    $('#tooltip').css({
        top: e.pageY - 50 + 'px',
        left: e.pageX + 'px',
        text: $(this).data('tooltip')
    });
}).mouseleave(function() {
    $('#tooltip').hide();
}).mouseenter(function() {
    $('#tooltip').show();
});
Foo
酒吧
修复它的坏方法:

    document.onmousemove = function(e)
{
    // e.target, e.srcElement and e.toElement contains the element clicked.
    var x = e.pageX;
    var y = e.pageY;
    var display;
    if(e.target.id == "cited"){
    //  alert(e.target.innerHTML);
        if (document.getElementById(e.target.id).innerHTML == "[1]") {
            display = "sometext1";  
        }
        else if (document.getElementById(e.target.id).innerHTML == "[2]") {
            display = "sometext2";
        }
        else if (document.getElementById(e.target.id).innerHTML == "[3]") {
            display = "sometext3";
        }
        document.getElementById("toolTip").style.top = y-50+"px";
        document.getElementById("toolTip").style.left = x+"px";
        document.getElementById("toolTip").style.visibility = "visible";
        document.getElementById("toolTip").innerHTML = "<p>"+display+"</p>";
    }
    else {
        document.getElementById("toolTip").style.visibility = "hidden"; 
    }
您可以将HTML更改为:

$('.cited').mousemove(function(e) {
    $('#tooltip').css({
        top: e.pageY - 50 + 'px',
        left: e.pageX + 'px',
        text: $(this).data('tooltip')
    });
}).mouseleave(function() {
    $('#tooltip').hide();
}).mouseenter(function() {
    $('#tooltip').show();
});
Foo
酒吧


看起来您可能有多个id为引用id的元素。每个id在每个html页面上都应该是唯一的。为什么不使用
e.target
?@Blender,因为我想获取innerHTML的值来告诉显示内容。我知道一个不好的方法,但我只是做得很快。@and bdrew我有两个相同的方法id,我想这不会是一个问题,因为我正在比较id的内容,这就是为什么我将它们放在同一个id上。我不想为每个id创建不同的id来执行相同的操作。@Matt这是一个问题:)id在页面上必须是唯一的,否则会出现问题。看起来您可能有多个id
引用的元素d
。每个id在每个html页面上都应该是唯一的。为什么不直接使用
e.target
?@Blender因为我想获得innerHTML的值来告诉显示什么。我知道一个不好的方法,但我只是快速地做了。@b如果我有两个id相同的id,我想这不会是一个问题,因为我正在比较t的内容他是id,这就是为什么我把它们放在同一个id上。我不想让每个人都有不同的id来做同样的事情。@Matt这是个问题:)id在页面上必须是唯一的,否则事情就会中断。那么代码中会有什么不同呢?如果我使用类或id,我不会得到同样的事情。哦……我只是重新阅读了正确的方式我做到了…现在我明白了为什么会发生这种事…Durrr…愚蠢的时刻就在我身边。谢谢你的帮助,它现在已经被修复了。我把它们变成了类,然后给每个类一个citedx的id,其中x发生了变化。是的,谢谢…我仍然不敢相信我没有更早地抓住它。在我重读了它之后,这是有意义的,你告诉我,我看得更近了。我感觉到了在那之后,我犯了很多次这样的错误。那么,这在代码中会有什么不同呢?如果我使用类或id,我不会发生同样的事情。哦…我只是重新阅读了我是如何做到的…现在我明白了为什么它会导致这样的事情…durr…Dumbass片刻。谢谢你的帮助,它现在已经被修复了。我把它们转换成classes,然后给每个人一个citedx的id,其中x发生了变化。是的,谢谢…我仍然不敢相信我没有更早地理解。这是有意义的,在我重读了那篇文章,你告诉我的,我仔细看了。在那之后我觉得自己很傻…我犯了很多次错误。谢谢你的帮助,它现在已经被修复了。我知道我做错了什么,我经常不会犯catc直到我做这件事。谢谢你的帮助,现在已经修好了。我知道我做错了什么,在我做这件事之前,我通常不会明白。