javascript - 悬停效果与 JavaScript

标签 javascript html css xml dom-events

我需要一些有关 JavaScript 代码的帮助。我正在尝试从 XML 数据中获取节点名称,我已经成功地这样做了,但现在我正在尝试创建一个小的 div 它将创建一个描述框,它将显示我的名字该元素,当我将鼠标悬停在该元素上时。我的意思是,当我将鼠标悬停在book 上时,描述框将显示book,如果我将鼠标悬停在price 上,描述框将显示价格。如果鼠标光标移到该元素之外,则描述标签将消失,我正在附加实时 fiddle 。所有这些事情都需要用 JavaScript 来完成,而不是 JQUERY。

Live Fiddle


book
  title
  author
  year
  price

function moveDescrip(event)
{
    var d = document.getElementsByClassName("Desc")[0];
    var x=event.clientX;
    var y=event.clientY;
    d.style.top = (y + 10) + "px";
    d.style.left = (x + 10) + "px";
}

function showDescrip()
{
    var d = document.getElementsByClassName("Desc")[0];
    d.style.visibility="visible";
}

function hideDescrip()
{
    var d = document.getElementsByClassName("Desc")[0];
    d.style.visibility="hidden";
}

最佳答案

我已经更新了你的 jsfiddle现在可以了。

基本上,当您创建“li”元素时,我会使用 node.name 值向其添加 _name 属性。这样,在 showDescrip 事件处理程序中,我只需检索属性并将其放入 float 的 div 中。我正在用 innerText 做这件事。如果你想显示一个更漂亮的 float div,带有图像等,你必须用其他东西替换 .innerText = 'desc',也许在 div 中放置一个 'span' 元素并放置描述里面。

最后,您需要调用 stopPropagation(),这样只有悬停在其上的元素会显示描述。如果不这样做,您将只会看到根节点的描述。

function showDescrip(e)
{
    if (!e) e = window.event;
    var d = document.getElementsByClassName("Desc")[0];
    var descSpan = document.getElementById('float-description');
    var text = document.createTextNode(this._name);
    descSpan.removeChild(descSpan.firstChild);
    descSpan.appendChild(text);
    d.style.visibility="visible";
    e.stopPropagation();
 }

...

function traverse(node) {
var ul = document.createElement('ul');
if (typeof node !== 'undefined') {
    var li = document.createElement('li');
    li._name = node.name;
    var desc = document.createTextNode(node.name);
    //more code...

已编辑jsfiddle用我告诉过你的关于 span 的内容。

关于javascript - 悬停效果与 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22144136/

相关文章:

javascript - 使用 Javascript 将复杂的 HTML 动态添加到 div

css - 无法在 HTML/CSS 中将本地镜像添加为背景图像

javascript - 应用 li :nth-child selector to total li count, 不使用新的 ul 重置

html - 被粘性页脚难住了 - 不会在预期的地方停止

javascript - ng-click inside ng-repeat 指向兄弟 div 而不是 ng-repeat 中的所有 div

javascript - 如何使用重置按钮删除选择选项标签中的背景颜色?

javascript - 如何使用 HOC 编写适当的 Jest 测试?

javascript - 无法使用 AJAX 修改表单内的元素

javascript - 我如何在 responseJson 上使用两个属性?

javascript - 查询。如果选中复选框,则检查 onload 并将 css 添加到 div