ASP.NET MVC-razor编写-2-svg中使用js+添加事件监听

环境:win10


效果

初始状态:
在这里插入图片描述
鼠标移入某个text(比如KS primer)时,text和连接的线条与箭头都变色:
在这里插入图片描述
鼠标移出时回复正常。

如果是移入另一种红色的text(比如Cell Sceening Tag),那么该text和连接的线条与箭头都变绿色:
在这里插入图片描述
鼠标移出时回复正常。

当然如果移向某个箭头时也可以同步变色。

实现思路

首先,介绍一下我的数据结构。我的razor展示时带一个自定义的对象,该对象有一个公有成员是List<MyObject>,其中MyObject也是自定义的对象,它带的公有成员,可以指定图中text、line和path的相关属性。如下面所示(已简化)。

<svg id="mySvg"><!-- 此处使用razor里的foreach循环 --><g><text/><line/><path/></g>
</svg>

现在为MyObject对应的、需要变色的svg子元素增加一个新的属性color-change,将这个属性与MyObject的某个bool成员绑定,以true和false区分子元素的颜色。

以text子元素为例,如果希望增加鼠标移入和移出的效果,可以这样写:

// 先寻找这个属性为true的元素
var texts = document.querySelectorAll("text[color-change=True]");
texts.forEach(function (text) {// 鼠标移动到上面时修改颜色text.addEventListener("mouseover", function () {var id = text.id; // 获取idsetColorforGroup(id, color1);});text.addEventListener("mouseout", function () {var id = text.id;setColorforGroup(id, color2);});
});
// 再寻找这个属性为false的元素
var stableTexts = document.querySelectorAll("text[color-change=False]");
// 类似的设置,这里不再赘述

其中setColorforGroup(id, color)是通过确认text的id来确定line和path的id的,只要取到了id,就可以设置成目标颜色。比如:

var textEl = document.getElementById(textId);
textEl.style.fill = color;

这里需要注意的一点是,因为color-change是直接绑定MyObject的某个bool成员,所以这句querySelectorAll("text[color-change=True]");里写的是True,如果不是绑定成员,是固定值(比如<path color-change="true" />),那就要写true了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1475374.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

第一次构建一个对话机器人流程解析(一)

1.问答机器人的组成 1.1 问答机器人的组成结构图 2. 问答机器人的组成-机器人的个人属性 所谓的机器人一般具备有个人的属性,这些属性固定,形成了机器人的个人偏好 在实现过程中,此处使用一个xml配置文件,配置了机器人的个人年龄、性别、职业等内容,同时包含常见有关于…

可信验证解释

学习目标&#xff1a;可信验证解释 可信验证是一种基于计算机技术和安全机制&#xff0c;用于确保系统、程序或数据的完整性和可信性的方法。以下是关于可信验证的详细解释&#xff1a;一、定义与原理 可信验证指的是利用计算机技术和安全机制&#xff0c;对系统、程序或数据…

一.2 程序被其他程序翻译成不同的格式(编译)

hello程序的生命周期是从一个高级C语言程序开始的&#xff0c;因为这种形式能够被人读懂。然而&#xff0c;为了在系统上运行hello.c程序&#xff0c;每条C语句都必须被其他程序转化为一系列的低级机器语言指令。然后这些指令按照一种称为可执行目标程序&#xff08;也称为可执…

【分布式系统】注册中心Zookeeper

目录 一.Zookkeeper 概述 1.Zookkeeper 定义 2.Zookkeeper 工作机制 3.Zookkeeper 特点 4.Zookkeeper 数据结构 5.Zookkeeper 应用场景 统一命名服务 统一配置管理 统一集群管理 服务器动态上下线 软负载均衡 6.Zookkeeper 选举机制 第一次启动选举机制 非第一次…

U盘管理软件有哪些?3款好用的软件亲测有效!

在数字化办公与数据交换日益频繁的今天&#xff0c;U盘作为便携的存储设备&#xff0c;其重要性不言而喻。 然而&#xff0c;U盘的使用也带来了数据泄露、病毒感染等安全隐患。为了有效管理U盘&#xff0c;确保数据安全与合规性&#xff0c;市场上涌现出了众多U盘管理软件。 小…

揭秘:源代码防泄密的终极秘籍

在当今信息科技高度发达的时代&#xff0c;源代码作为企业最核心的资产之一&#xff0c;其安全性不言而喻。源代码的泄露可能导致企业技术机密被竞争对手获取&#xff0c;进而威胁到企业的市场竞争力和长远发展。因此&#xff0c;源代码防泄密成为了企业信息安全工作的重中之重…

解决win10报“无法加载文件……profile.ps1,因为在此系统上禁止运行脚本”的问题

打开命令行报错 解决方法 使用管理员权限打开PowerShell&#xff1a;WinX, 选择“Windows PowerShell&#xff08;管理员&#xff09;” 输入&#xff1a;Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 输入&#xff1a;y确认修改安全策略 &#xff1a;y确认修改安全策略…

vue + element ui 实现侧边栏导航栏折叠收起

首页布局如下 要求点击按钮,将侧边栏收缩, 通过 row 和 col 组件&#xff0c;并通过 col 组件的 span 属性我们就可以自由地组合布局。 折叠前 折叠后 <template><div class"app-layout" :class"{ collapse: app.isFold }"><div class&…

Java-Sql注入以及如何解决

sql脚本注入: 如果sql语句使用字符串拼接&#xff0c;可能会出现字符串的拼接&#xff0c;导致sql注入。 #是会先进行预编译&#xff0c;传进来的参数通过占位符填入到已经完成编译的语句中去。

树莓派4B_OpenCv学习笔记21:OpenCV_haar人脸识别

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: ​ Opencv 版本是4.5.1&#xff1a; ​ Python 版本3.7.3&#xff1a; 今日学习&#xff…

python实现接口自动化

代码实现自动化相关理论 代码编写脚本和工具实现脚本区别是啥? 代码&#xff1a; 优点&#xff1a;代码灵活方便缺点&#xff1a;学习成本高 工具&#xff1a; 优点&#xff1a;易上手缺点&#xff1a;灵活度低&#xff0c;有局限性。 总结&#xff1a; 功能脚本&#xff1a;工…

【Ubuntu】详细说说Parallels DeskTop安装和使用Ubuntu系统

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏 支持一下博主吧~ 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境二、Ubuntu系统的使用2.1 系统的下载2.2 系统的安装2.3 安装桌面版(可选)2.3.1 安装/更新apt2.3.2 安装桌面版2.3…

【Go】函数的使用

目录 函数返回多个值 init函数和import init函数 main函数 函数的参数 值传递 引用传递&#xff08;指针&#xff09; 函数返回多个值 用法如下&#xff1a; package mainimport ("fmt""strconv" )// 返回多个返回值&#xff0c;无参数名 func Mu…

华贝甄选绿色积分模式的可信赖之处揭秘

华贝甄选是天贝集团旗下的数字产融生态领先品牌&#xff0c;业务涵盖 PPP 产业、金融生态、国际投资、智慧能源、数字产业、智慧产业、三农产业、生物科技等领域。其优势在于通过多维系统助力 DAO 组织系统打造&#xff0c;实现财富与健康双丰收&#xff1b;打造全新生态体系&a…

FreeRTOS和UCOS操作系统使用笔记

FreeRTOS使用示例 任务创建与删除 #define START_TASK_PRIO 1 //任务优先级 (1) #define START_STK_SIZE 128 //任务堆栈大小 (2) TaskHandle_t StartTask_Handler; //任务句柄 (3) void start_task(void *pvParameters);//任务函数 (4)#define TASK1_…

vue3 学习 之 vue3使用

为什么要学习vue3呢&#xff1f; vue2.0也是现在比较稳定的一个版本&#xff0c;社区还有周边都比较完善&#xff0c;如果不是非必要其实我们不需要着急直接升级到vue3.0; 那为什么还要学习&#xff0c;主要是还是为了了解一下vue3.0相较于2.0的优势和特性&#xff0c;方便之后…

跳转控制语句—break和continue

break语句我本人只在switch语句和循环语句中遇见&#xff0c;continue则只在循环语句中遇见&#xff1b; 下面我来记录一下&#xff0c;它俩的不同之处&#xff1a; 1.break 相比之下&#xff0c;break是比较简单的&#xff0c;就是跳出循环体&#xff0c;执行循环体下方的代…

刷题之删除有序数组中的重复项(leetcode)

删除有序数组中的重复项 这题简单题&#xff0c;双指针&#xff0c;一个指针记录未重复的数的个数&#xff0c;另一个记录遍历的位置。 以下是简单模拟&#xff0c;可以优化&#xff1a; class Solution { public:int removeDuplicates(vector<int>& nums) {int l0…

智慧地产视觉监控系统开源了,系统采用多种优化技术,提高系统的响应速度和资源利用率

智慧地产视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。用户只需在界面上…