javascript – 根据d3.js中的事件处理程序更改文本属性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 根据d3.js中的事件处理程序更改文本属性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1932字,纯文字阅读大概需要3分钟。
内容图文
我根据以下数据生成了一系列圆圈和文本字段.见下面的代码.
var data = [{"x":534.720996869109,"y":188.402300350323,"label":"ATP","size":5},
{"x":526.793135268385,"y":494.495864118909,"label":"PK","size":10},
{"x":539.854817710164,"y":332.435549874068,"label":"rpoA","size":10},
{"x":528.357841173126,"y":236.960433131191,"label":"rpoB","size":10}]
var width = 1000,height = 1000;
var x = d3.scale.linear()
.domain([0, 1000])
.range([0, width]);
var y = d3.scale.linear()
.domain([0, 1000])
.range([0, height]);
var svgContainer = d3.select("body")
.append("svg:svg")
.attr("width", width)
.attr("height",height);
//text
var text = svgContainer.selectAll("text")
.data(data)
.enter()
.append("text");
var textbAttributes = text
.attr("x", 800)
.attr("y", 100)
.text(function(d) { return ''})
.attr("font-family", "sans-serif")
.attr("font-size", "20px")
.attr("fill","black");
//circles
var nodesGroup = svgContainer.append("g");
var nodes = nodesGroup.selectAll("circle")
.data(data)
.enter()
.append("svg:circle");
var nodeattr = nodes
.attr("cy", function(d,i){return y(d.y); })
.attr("cx", function(d,i){return x(d.x); })
.on("click", function(){
d3.select("text")
.text(function(d,i){return d.label;})
})
.attr("r", function(d,i){return d.size;});
我希望能够在单击圆圈时使用svg文本元素“text”中的相应数据元素“label”刷新文本字段.但是,上面的代码只返回第一个标签元素,无论我点击的是哪个圆圈.感谢所有帮助.谢谢!
解决方法:
我不完全确定你要对文本元素做什么 – 你正在为每个数据项创建一个文本元素,所有数据项都在相同的坐标上彼此重叠.
我的猜测是你想要一个文本元素显示已被点击的圆圈的标签?如果是这种情况,您可以将文本元素的创建更改为仅一个元素:
//text
var text = svgContainer.append("text")
.attr("x", 800)
.attr("y", 100)
.text('')
.attr("font-family", "sans-serif")
.attr("font-size", "20px")
.attr("fill","black");
您可以将圆点击处理程序更改为:
.on("click", function(d){d3.select("text").text(d.label);})
这里的工作示例http://jsfiddle.net/yyESt/
这是你想要做的吗?
内容总结
以上是互联网集市为您收集整理的javascript – 根据d3.js中的事件处理程序更改文本属性全部内容,希望文章能够帮你解决javascript – 根据d3.js中的事件处理程序更改文本属性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。