我在D3.JS中创建了几个路径,在鼠标悬停时调用此鼠标悬停函数来获取该路径的属性并将其存储在变量中。然后,我尝试测量级别属性的长度并将console.log记录下来,但是我得到了一个错误:


我还想使用.slice(-1,1)方法获取该value属性中的最后一个数字,但这也不起作用。
我认为必须将属性读取为字符串才能执行这些操作。但是当我在circleLevel上调用.toString()时,仍然出现此错误。

这是鼠标悬停功能:

 function mouseover(){
var circleName = d3.select(this).attr("name");
var circleSize = d3.select(this).attr("size");
var circleLevel = d3.select(this).attr("level");
var levelLength = circleLevel.length();
console.log(circleLevel.length());


}

这是在JS小提琴上:http://jsfiddle.net/RL_NewtoJS/ryyt6ruj/3/

最佳答案

在JavaScript中,字符串长度是一个属性,而不是方法。所以

circleLevel.length()


应该

circleLevel.length


该错误是因为它试图将length数字作为函数调用:5() // invalid

关于获取最后一个字符,请使用

circleLevel.charAt(circleLevel.length - 1)


要么

circleLevel.substr(circleLevel.length - n) // to get last n characters

10-06 02:51