【问题标题】:Tooltip popup with dynamic information带有动态信息的工具提示弹出窗口
【发布时间】:2012-10-12 17:46:10
【问题描述】:

我想要做的是,当您将鼠标悬停在一个名称上时,会显示一个包含该名称详细信息的工具提示弹出窗口。

我执行了以下操作,但由于某种原因,它似乎不起作用。没有工具提示出现。当您将鼠标悬停在名称上时,它会调用一个函数并执行 AJAX 请求,我们会以字符串形式返回详细信息。我已经验证该函数工作正常并返回字符串。

我似乎无法将返回的字符串放入工具提示弹出窗口中。我在 IE8 上测试这个

Javascript 函数:

function showDetails(name){
    var xmlHttpRequest; 
    if(window.XMLHttpRequest){
        xmlHttpRequest = new XMLHttpRequest();
    }else{
        xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP>");
    }
    xmlHttpRequest.onreadystatechange=function(){
        if(xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200){
            document.getElementById("details").innerHTML = xmlHttpRequest.responseText;
        }
    }
    xmlHttpRequest.open("GET", "showStopsInfoPopup.do?name="+name, true);
    xmlHttpRequest.send();
}

CSS

#tooltip { position: relative; }
    #tooltip a{text-decoration: none;}
    #tooltip a span { display: none; color: #FFFFFF; }
    #tooltip a:HOVER span { display: block; position: absolute; 
                             width: 200px; background-color: #aaa; 
                             height: 50px; color: #FFFFFF; padding: 5px; }

JSP 页面:

<tr id="tooltip">
    <td onmouseover="showDetails('${name}')">
        <a href="#"><c:out value="${name}"><span id="details"></span></c:out></a> 
    </td>
</tr>

只有我的查看源页面的相关部分(生成的html):“a”标签内的“span”标签丢失了!!

<tr id="tooltip">               
    <td onmouseover ="showDetails('NRT')"><a href="#">NRT</a> </td> 
</tr>    
.
.
.
...  
<span id="details">*****************</span>

【问题讨论】:

  • xmlHttpRequest.onreadystatechange=function(){ if(xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200){ document.getElementById("details").innerHTML = xmlHttpRequest.responseText; } } - 它有效吗?也许它没有显示是因为它没有返回有效的响应?
  • 是的,它可以工作。我做了 onClick() 而不是 onmouseover 并在页面底部显示数据而不是工具提示,它被显示出来了。

标签: java css html jsp tooltip


【解决方案1】:

我假设您正在生成动态显示的数据并且您有不止一行。

如果是这样,那么表中的所有 span 标签都将具有相同的 id("details")。您必须能够区分两行。

您可以做的是在 id 中添加一个数字,并在进入下一行时递增该数字,这样每个 span 标签都有唯一的 id。

<a href="#"><c:out value="${name}"><span id="details${index}"></span></c:out></a> 

确保将索引作为参数传递给您的 javascript 函数并进行以下更改。

function showDetails(name, index){
..
...
document.getElementById("stopsInfo"+index).innerHTML = xmlHttpRequest.responseText;
.
...
}

【讨论】:

    【解决方案2】:

    您能否查看源代码并向我们展示生成的 HTML。我试过这个,只是做一个快速测试时它似乎工作正常。

    【讨论】:

    猜你喜欢
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 2012-11-18
    • 1970-01-01
    相关资源
    最近更新 更多