为什么 event.currentTarget null 和 e.target 总是相同? [复制]

2024-01-08

我很好奇为什么当前目标输入 Event.listener 中为 null 和e.target总是第一个元素被点击?

我试图通过单击然后在输入字段中插入数字来更改每条折线的 ID。但是如果我想在更改第一个元素后更改第二个元素的 ID,e.target始终引用第一个单击的元素。

我怎样才能避免这种情况?有什么解决方法吗?

测试代码

HTML

<html>
 <head>
 </head>
 <body>
  <div class="form-group">
  <input type="number" class="form-control" id="attributeID" placeholder="0" min="0" max="1000" step="1" value="">
  </div>
  <svg id="svgDraw" type="image/svg+xml" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1587" height="580">
    <g id="g2"></g>
    <rect width="1587" height="580" id="rect1" style="fill: none; pointer-events: all;"></rect>
     <g id="gElement" ></g>
     <g id="path">
       <g class="polyline" id="0" value="line">
          <polyline points="322.99999999999994,239,393.99999999999994,142.00000000000006" id="pathPoints0" fill="none" stroke="#186AA9" stroke-width="4"></polyline>
             <circle cx="322.99999999999994" cy="239" r="2"></circle>
             <circle cx="393.99999999999994" cy="142.00000000000006" r="2"></circle>
       </g>
       <g class="polyline" id="1" value="line">
          <polyline points="560,241.00000000000006,577.9999999999999,163" id="pathPoints1" fill="none" stroke="#186AA9" stroke-width="4"></polyline>
             <circle cx="560" cy="241.00000000000006" r="2"></circle>
             <circle cx="577.9999999999999" cy="163" r="2"></circle>
      </g>
   </g>
 </svg>
<script src="test.js"></script>
</body>
</html>

JS

//Event-Listener, fired when clicked on a line

var svgHolder = document.querySelectorAll("polyline");
svgHolder.forEach(function(elem){
    elem.addEventListener("click",function(e){

  e.stopImmediatePropagation();
  e.preventDefault();
  console.log(e.target.parentElement);

  var input = document.getElementById("attributeID");
  //colorize the clicked element and call getAttribute Function
  if (e.target.nodeName == "polyline") {
    e.target.setAttribute("stroke", "#E9203B");
    getAttributes(e);
  } else if (e.target.nodeName == "polygon") {
    e.target.setAttribute("stroke", "#E9293B");
    getAttributes(e);
  } else if (e.target.nodeName == "path") {
    e.target.setAttribute("stroke", "#E9293B");
    getAttributes(e);
  }
  console.log(e.currentTarget);
  console.log(e.target);
  //event listener, fired when the value of the input field changes
  input.addEventListener('input', function (event) {
    event.preventDefault();
    event.stopImmediatePropagation();
    console.log(e.currentTarget);
    console.log(e.target);
    //here the e.target is not changing and always refers to the first element clicked
    e.target.parentElement.setAttribute("id", input.value);
  }, false);

  var c = document.getElementById("rect1");
  c.addEventListener("click", function () {
    if (e.target.nodeName == "polyline") {
      e.target.setAttribute("stroke", "#186AA9");
    } else if (e.target.nodeName == "polygon") {
      e.target.setAttribute("stroke", "none");
    } else if (e.target.nodeName == "path") {
      e.target.setAttribute("stroke", "grey");
    }
  });

    });
});


//set the value of the input field      
function getAttributes(element) {
  var id = element.target.parentElement.getAttribute("id");
  document.getElementById("attributeID").value = id;
}

编辑/解决方案好的,我可以修复它。

var input = document.getElementById("attributeID");

        input.onchange = function(event){

        event.preventDefault();
        event.stopImmediatePropagation();

        target.parentElement.setAttribute("id",input.value);

    };

onchange 做到了。我认为如果我附加这样的事件,它将覆盖旧事件。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 event.currentTarget null 和 e.target 总是相同? [复制] 的相关文章

  • touchableopacity onpress 函数未定义(不是函数)React Native

    我希望能够在点击 TouchableOpacity 按钮后导航到新屏幕 但收到一条错误消息 this3 handleThisTap 不是函数 在 this3 handleThisTap 中 this3 handleThisTap 未定义 i
  • 从 firebase 数据库获取最高分值

    在我的网站上有一些我从 firebase 获得的电影 电影的分数在0到100之间 我已经在我的网站上找到了所有电影 我还想按降序显示它们 例如评分最高的 5 部电影 我怎样才能实现这一点 感谢您的回答 const app initializ
  • 我应该选择哪个 redux 中间件?

    按照指南 我发现了一些用于 redux 应用程序的中间件 Redux 重击 https github com gaearon redux thunk Redux 承诺 https github com acdlite redux promi
  • 使用时间序列数据和scaleBand指定D3条形图上的刻度

    我尝试为具有时间序列数据的 d3 v4 条形图指定多个刻度和多个刻度标签 如下图所示 基于本教程 https bl ocks org zigahertz 1ee4965ff76514517bb7ce6af21e5d44我有一个处理时间序列数
  • jQuery 或 JavaScript 中的“$”符号是什么意思? [复制]

    这个问题在这里已经有答案了 可能的重复 JavaScript 中 符号的含义是什么 https stackoverflow com questions 1150381 what is the meaning of sign in javas
  • javascript获取网页中选定文本的段落

    突出显示文本后 我想获取所选文本所在的段落 var select window content document getSelection 请问有什么指点吗 这实际上很难做到 因为你必须考虑六种情况 所选内容不在一个段落内 简单 整个选择都
  • 有没有一种方法可以使页面布局在 100% 缩放下完美契合,同时又尊重更大的缩放系数?

    有多种方法可以布局网页 使其适合浏览器视口 DOMwindow 当我说 适合 时 我包括更改所用字体的大小 更改 DIV IMG 和其他渲染元素的宽度和高度 以及允许元素 流畅 移动 目标是使页面在所有显示设备 从小型手机到大桌面屏幕 上看
  • jQuery 选择器在控制台中不起作用

    我一辈子都无法解决这个问题 我正在运行 js 容器状态 是页面上正在运行的 js 的控制台日志 它显示一个选择器 但如果我想在控制台中执行任何操作 它只会返回 null 我假设我在某个地方过度编写了 jQuery 函数 就好像我调用了 jQ
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 适用于 HTML5 混合应用程序的 CORS

    我读过很多关于 CORS 的文章 以及允许 Access Control Allow Origin 如何成为 Web 服务器的安全漏洞 但没有一篇文章解释了如何允许 HTML5 混合应用程序访问某些不允许使用通配符 的域上托管的 Web 服
  • 有什么简单的方法可以清理 Google Maps v3 API 上的所有标记、折线和其他叠加层吗?

    我想获得一张新地图 而不是使用刷新网页 thanks 并有简单的方法来获取地图上的所有叠加层 在 v2 API 中 有clearOverlays http code google com apis maps documentation ja
  • javascript 代码只能在函数之外工作 - 为什么?

    为什么这段代码不能像下面写的那样工作 但如果我注释掉function testBgChange 并将代码保留在该函数内 它可以正常工作 如果我将代码保留在函数中然后调用该函数 会有什么区别
  • 带有子节点的拖放区域

    我有一个带有多个子节点的拖放区域 主要元素有dropenter and dropleave事件 但是 如果您将文件拖动到主元素内部和子节点上方 则dropleave被触发 如何处理 以便dropleave仅当拖动的元素和鼠标位于主元素之外时
  • JavaScript 匿名函数语法

    下面两个块有什么区别 block 1 console log anonymous block block 2 function anon console log anonymous block 2 我在 Netbeans 中运行了这个 使用
  • iOS 11 getUserMedia 不起作用?

    苹果公司发表声明称getUserMedia将在 iOS 11 上完全正常运行 安装 iOS 11 Beta 版本 5 后 我确实收到一条消息 表明我的网站请求访问我的相机和麦克风 但似乎是这样的 video src window URL c
  • 在窗口调整大小和窗口加载时动态调整 pixi 舞台及其内容的大小

    我正在尝试在窗口调整大小时动态调整 pixi 舞台 画布和内容 的大小 并且最初以浏览器窗口的大小加载 而不改变比例 我使用以下内容将初始大小基本上设置为window innerWidth window innerHeight 但它做了一些
  • 使用js获取选择选项的onclick事件

    我有一个非常令人沮丧的问题 我有这个代码 它过滤掉我的结果并将它们输入到选择框中 var syn
  • 如何在不刷新页面的情况下更新页面 html 和 url

    我想知道是否有人可以指出我学习如何在不刷新页面的情况下更新页面 html 和 url 的方向 是否有任何现有的 javascript 库可以处理这个问题 或者有一本涵盖此类事情的好书 这是使用该效果的示例网站 http onedesignc
  • 如何防止IE11弹出(您确定要离开此页面)

    我正在处理一个页面 除了一个下拉菜单可供选择外 我无需输入任何内容 但在 IE11 中 当我尝试转到下一页时 它会弹出该消息 我想阻止这种弹出的发生 所以我只是想知道 IE11 中弹出窗口的默认行为是什么 因为它不会出现在 Chrome 或
  • 如何在jsp页面中包含javascript

    我是 J2EE 和 Web 开发的新手 这是我的问题 我想在网页中包含 angular js 这是有效的版本 但我也想要一些本地的 javascript 文件 并且希望我想在本地目录中导入 angularjs

随机推荐

  • tkinter Checkbutton 小部件返回错误的布尔值

    我这里有一个简单的 GUI 它应该根据检查按钮是否被选中返回一个布尔值 我已将布尔变量设置为 False 因此检查按钮为空 我不明白的是 当我检查按钮时 绑定到该小部件的函数返回 False 而不是 True 这是为什么 这是代码 from
  • Swift:对 NSNotFound 的引用不明确

    在向某些 Objective C 代码添加桥接标头后 我开始收到有关以下内容的编译器错误 NSNotFound是一个不明确的参考 我的猜测是它可以用某种模块前缀来修复 是的 将其更改为 Foundation NSNotFound
  • 如何在 Android SeekBar 上添加数字刻度

    我正在使用开箱即用的 android SeekBar 组件 下面我想添加 1 到 5 中的数字来显示 SeekBar 的进度 我在搜索栏上正确分配数字时遇到问题 就像下图一样 要在搜索栏拇指上绘制文本 请使用此功能 public Bitma
  • Rails 中用户注销后如何使所有会话失效?

    我是 Rails 新手 并且正在关注 Michael Hartl 的 Rails 教程 因此我的代码大部分是从那里借来的 这是场景 我使用以下方式登录我的网站Computer A 然后我使用相同的用户 ID 登录该网站Computer B
  • Android 文件路径 (Xamarin)

    我目前正在尝试选择一个具有意图的文件 我的问题是 返回的路径格式不正确 我的意图 private void selectAudioFile object sender EventArgs eventArgs Intent new Inten
  • PDF:提取的图像被切片/平铺

    图像提取pdfimages and mupdf mutool到目前为止工作正常 使用 FreePDF 生成的 PDF 中的图像始终会被切片 因此一张图像会生成多个图像文件 有什么技巧可以避免这种情况吗 我如何使用结果pdfshow 有没有坐
  • Lucene 索引

    我想使用 Lucene 为现有数据库中的表建立索引 我一直在想这个过程是这样的 为表中的每一列创建一个 字段 存储所有字段 分析 除具有主键的字段之外的所有字段 将表中的每一行存储为 Lucene 文档 虽然此表中的大多数列都很小 但其中有
  • Windows 窗体内存泄漏

    我在 Windows 应用程序中发现轻微的内存泄漏 我在我的应用程序中使用 DevExpress XtraForm 我看到的是该表格的一个实例始终保存在内存中 如果您多次打开同一个表单 它仍然保留上次打开的表单的引用 前任 如果您在应用程序
  • 如何强制删除GitHub中的远程分支?

    我有 2 个远程分支 pending issues in project new issues in project 我尝试删除pending issues in project像这样 git push origin pending iss
  • 提取最新记录

    我有一个这样的表 SKU AVG COST DATE TIME AAA 1 50 20110301 110331 AAA 1 52 20110302 140005 AAA 1 54 20110303 150301 AAA 1 56 2011
  • Python:当“列表”指同一事物时为什么使用“列表[:]”?

    考虑列出一个清单 gt gt gt l 1 2 3 使用有什么好处 gt gt gt l when gt gt gt l打印和以前一样的东西吗 Thanks 它创建一个 浅 副本 gt gt gt l 1 2 3 gt gt gt m l
  • 如何从svn中删除“-”文件?

    我不小心在目录中创建了文件 只是减号 并提交了它 我必须删除它 因为它在其他机器上引起错误 svn 无法将字符串从 UTF 8 转换为本机编码 svn 226 128 147 我可以使用 rm i 或 python os remove xe
  • 是否可以在不使用 s3 的情况下在 sagemaker 中进行预测

    我有一个 pkl 我想将其投入生产 我想对我的 SQL 服务器进行日常查询并对大约 1000 行进行预测 这文档 https docs aws amazon com sagemaker latest dg how it works batc
  • 如何在非表单应用程序中生成击键

    所以我有一个巨大的程序 并决定我应该让其中一个方法在单独的线程中运行 所以我将该方法放在一个单独的类中 并在我的表单上激活它 它似乎按照我想要的方式工作 直到它到达给我这个错误的地方 SendKeys 无法在此应用程序内运行 因为该应用程序
  • reverse_lazy() 和 URL 加载?

    我试图理解 Django 概念 但我对 URLResolver 很挣扎reverse lazy 据我所知 我必须使用reverse lazy 当我想反转到尚未加载的 URL 时 所以当我创建 CBV 并声明success url I use
  • 如何减少 Visual C++ 项目(本机 C++)的编译时间和链接时间?

    如何减少 VC 项目 本机 C 的编译时间和链接时间 请指定每个建议是否适用于调试 发布或两者 这对您来说可能听起来很明显 但我们尝试尽可能多地使用前向声明 即使它需要写出类型所在的长命名空间名称 Forward declaration s
  • Excel 公式 -> 如何更改 SUMPRODUCT 公式以跳过空单元格

    上下文是我正在使用调整后的和积公式来计算加权平均值 问题是sumproduct 包含数组中的空单元格 gt 加权平均值计算不正确 问题是如何编辑 sumproduct 以排除数组中的空单元格 或者还有其他干净整洁的解决方案吗 在 sumpr
  • 设置EditText光标颜色

    我在平板电脑项目上使用 Android 的 Holo 主题时遇到了这个问题 但是 我在屏幕上有一个具有白色背景的片段 我正在添加一个EditText该片段上的组件 我尝试通过设置 Holo Light 主题资源的背景来覆盖主题 但是 我的文
  • 为什么要编译成中间代码?

    为什么Actionscript Java C 等要编译成中间代码 我知道使用中间代码的跨平台优势 问题是 与解释的脚本 JS Python PHP Perl 等 相比 编译为中间代码有什么好处 仅仅是为了代码混淆吗 或者是什么 此外 与编译
  • 为什么 event.currentTarget null 和 e.target 总是相同? [复制]

    这个问题在这里已经有答案了 我很好奇为什么当前目标输入 Event listener 中为 null 和e target总是第一个元素被点击 我试图通过单击然后在输入字段中插入数字来更改每条折线的 ID 但是如果我想在更改第一个元素后更改第