javascript - 你如何将属性发送到 svg 中的 javascript 函数

标签 javascript svg

我有一个小的 SVG 文件,它增长得非常快,我有这个小功能:

function displayName(name) {
    document.getElementById('label').firstChild.data = name;
}

所以我的每一个元素看起来都是这样的:

<ellipse id="MyElementName" onmouseover="displayName('MyElementName')" 

因此,每当我的元素悬停时,它都会在 id 为 label

的文本中打印其名称

但是因为我有一些可以悬停的元素,所以我想知道是否有捷径。像这样的东西:

<ellipse id="MyElementName" onmouseover="displayName('$id')" 

这样我就不必到处复制元素名称了。

有没有办法做到这一点,还是我需要为所有元素复制它们?

最佳答案

您可以使用事件监听器。

(橙色的故意没有id)

var svgs = document.getElementsByTagName('svg');
var display = document.getElementById('display');
for (var i = 0; i < svgs.length; i++) {
  svgs[i].addEventListener('mouseenter', function(e) {
    displayId(e.currentTarget);
  });
  svgs[i].addEventListener('mouseleave', function(e) {
    clearDisplay();
  });
}

function displayId(e) {
  if (e.id) {
    display.innerHTML = e.id;
  }
}

function clearDisplay() {
  display.innerHTML = '';
}
<svg height="100" width="100" id="red">
  <circle cx="50" cy="50" r="40" fill="red" />
</svg>
<svg height="100" width="100" id="green">
  <circle cx="50" cy="50" r="40" fill="green" />
</svg>
<svg height="100" width="100" id="blue">
  <circle cx="50" cy="50" r="40" fill="blue" />
</svg>
<svg height="100" width="100">
  <circle cx="50" cy="50" r="40" fill="orange" />
</svg>

<div id="display"></div>

关于javascript - 你如何将属性发送到 svg 中的 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54838656/

相关文章:

javascript - 我如何使用 css 和 javascript 更改两个选定元素的颜色

javascript - 表格顶部和底部的水平滚动条

javascript - 从隐藏字段获取值 - JavaScript

javascript - 如何访问 svg 文件的路径数据并将其用作谷歌地图标记?

javascript - 在有向图中循环遍历 SVG 圆圈

javascript - 有没有办法在自定义按钮单击之前上传文件,然后使用 ajax 将其发送到 Controller 操作方法?

Java/JavaScript 日期 : Is this true?

带 svg 的 Jquery 选择器

javascript - 如何在任意圆内创建方形 div?

javascript - 与 D3 异步设置 svg 元素属性