无法使用函数更改d3.js中的文本属性(“y”)
unable to change text attr("y") in d3.js using function
我正在d3.js中做一个简单的演示-mouseover应该增加圆圈的大小并显示文本"Hello",mouseout则相反。
这是代码笔链接-http://cdpn.io/LzIjt
当我尝试将文本的"y"值链接到圆的"cy"值时,文本不会显示。然而,它适用于"x"
成功-文本显示-
vis.append("svg:text")
.attr("x",function()
{
return (d3.select("circle").attr("cx") - 17);
})
.attr("y",103)
.text("Hello")
.attr("visibility","hidden");
失败-文本不显示-
vis.append("svg:text")
.attr("x",function()
{
return (d3.select("circle").attr("cx") - 17);
})
.attr("y",function()
{
return (d3.select("circle").attr("cy") + 3);
})
.text("Hello")
.attr("visibility","hidden");
属性的工作方式是否有遗漏?
谢谢!
~Madhu
D3的一大优点是可以在Chrome等浏览器中使用控制台和检查元素。查看您的"不起作用"示例,您的"cy"值显示为1003。
因此,您在此处进行选择return (d3.select("circle").attr("cy") + 3);
返回CCD_ 2的值。
但是,如果您确保您的选择被视为一个整数,那么函数return ( parseInt(d3.select("circle").attr("cy"), 10) + 3);
返回CCD_ 4的值。
请参阅此处的操作代码,并且一定要查看控制台。
http://jsfiddle.net/2qQdx/
问题出在+上
使用x减法:
return (d3.select("circle").attr("cx") - 17);
添加没有:
return (d3.select("circle").attr("cx") + 17);
除非你强迫它做数学运算,否则不要在17:之前加*1来连接
return (d3.select("circle").attr("cx") * 1 + 17);
与y相同:
使用减法:
return (d3.select("circle").attr("cy") - 3);
不适用于加法:
return (d3.select("circle").attr("cy") + 3);
除非您通过添加*1:来强制它使用cy属性作为数字
return (d3.select("circle").attr("cy") * 1 + 3);
其他人可能有一个更干净的解决方案,但这是连接与添加的问题。
相关文章:
- 手柄'img'单击事件并插入'alt'使用jQuery将属性转换为文本框
- 如何解析文本区域中的结构化字符串数据(接近JSON)以检索其所需的属性
- JavaScript 文本节点属性
- 更改html标记或其子标记(而不是其属性)文本中的日期格式
- 如何在弹出窗口中隐藏文本属性'It’传单上没有填写
- 更改多个 iframe 中的文本框属性
- 我想从使用onkeypress事件的文本区域获取一个属性
- 单击TextArea'时,文本区域中的属性名称是什么;s上下箭头按钮
- 无法读取未定义的属性“替换” - 替换 JS 生成的 HTML 中的文本
- 使用 CSS3 数据属性进行客户端文本搜索
- 将文本值匹配/分配给属性
- 如何替换元素属性中的部分文本
- FabricJS CurvedText对象(扩展)在更新间距和文本属性时未显示
- jQuery文本属性中的Html代码
- 如何编写将获取属性文本的正则表达式
- 更改属性文本并使用挖空保留输入的值
- 点击时显示弹出窗口,属性文本为JavaScript或jQuery
- 如何在jquery中更改json的属性文本
- 为什么在此示例中出现“无法读取未定义的属性'文本'”
- 如何使用 ajax 获取属性文本