【问题标题】:How do I use javascript onmouseover function with svg to get classname?如何使用带有 svg 的 javascript onmouseover 函数来获取类名?
【发布时间】:2019-11-24 16:32:30
【问题描述】:

我有一个 SVG 地图,当鼠标悬停在地图的某个区域时,我想在其中更改侧面板上的文本。我想将文本更改为包含鼠标悬停区域的锚的类名。目前,每当我将鼠标悬停在地图上时,它都会在侧面板中返回 undefined。

我尝试将代码设置为仅在类名不等于 nil 时才起作用,并且该函数没有触发,所以我一定不会在鼠标悬停时获得锚标记。

HTML(删除无关代码)

<p onmouseover="houseQuickOverview()">
    <svg ... >
        <g id="G_Areas" ... >
            <a class="HD-002" ... >
                <path gg:cat="2" d="M ... />
            </a>
            <a class="HD-003" ... >
                <path gg:cat="2" d="M ... />
            </a>

JavaScript

let houseQuickOverview = function () {
        let district = this.className;
        document.querySelector(".districtNumber").innerHTML = district;

}

当我将鼠标悬停在包含 SVG 的段落上时,当鼠标触摸其中一个锚点时,我希望它将锚点的类名返回到 DistrictNumber div。它目前只返回未定义的 div。

【问题讨论】:

    标签: javascript html svg classname


    【解决方案1】:

    试试下面的方法,在你的具体情况下,你可能需要像这样缩小 els

    const anchor = document.querySelectorAll("p a"); // to select only &lt;a&gt; under &lt;p&gt;

    (function() {
      const anchor = document.querySelectorAll("a")
      for (const a of anchor) {
        a.addEventListener('mouseover', function(event) {
          document.getElementById('result').innerHTML = event.currentTarget.className;
        })
      }
    })();
    #result {
      color: red;
    }
    
    a {
      display: block;
      margin: 1em;
    }
    <a class="HD-002">
                    123
                </a>
    <a class="HD-0022">
                    456
                </a>
    <a class="HD-0023">
                    789
                </a>
    <a class="HD-0024">
                    101112
                </a>
    
    <div id="result"></div>

    【讨论】:

    • document.getElementById('result').innerHTML = event.currentTarget.innerHTML; 当我将最后一个 innerHTML 更改为 className 时,我的结果得到 [object SVGAnimatedString]
    • 我没有你的 svg,所以你能举一些例子如何重现吗?
    • 我发现了问题,似乎由于某种原因,SVG标签内的元素的类名不能被.className访问,但它们必须被.className.baseVal或.target.getAttribute(“类”)。感谢您的帮助!
    猜你喜欢
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多