Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择特定图元并更改其中一个图元的样式_Javascript_Jquery_Html_Css_D3.js - Fatal编程技术网

Javascript 选择特定图元并更改其中一个图元的样式

Javascript 选择特定图元并更改其中一个图元的样式,javascript,jquery,html,css,d3.js,Javascript,Jquery,Html,Css,D3.js,现在我正在使用piecharts d3.js,有一个小问题。 piechart的每个部分都会得到一个标签,标签旁边有一个位于piechart外部的值。当下面有多个值时,假设有5%的值相互重叠,这些值将无法读取 我的值是用 }).attr("text-anchor", "middle") .text(function(d, i) { if (config.unit === "%") { return jsonChartData.dataRows[0].values[i] +

现在我正在使用piecharts d3.js,有一个小问题。 piechart的每个部分都会得到一个标签,标签旁边有一个位于piechart外部的值。当下面有多个值时,假设有5%的值相互重叠,这些值将无法读取

我的值是用

}).attr("text-anchor", "middle")
.text(function(d, i) {
    if (config.unit === "%") {
        return jsonChartData.dataRows[0].values[i] + ": " + jsonChartData.dataRows[0].numbers[i] + jsonChartData.unit;
    } else {
        return jsonChartData.dataRows[0].values[i] + ": " + jsonChartData.dataRows[0].numbers[i];
    }                           
});
应检查其值的零件为

 jsonChartData.dataRows[0].numbers[i]
现在我想将重叠元素的不透明度(最高的除外)降低到0.4。我甚至不知道这是否是最好的解决方案。当在移动设备上悬停/点击时,这些元素的不透明度可能会改变


由于我是JavaScript新手,我非常感谢您对这个问题的帮助。

我认为更改悬停时的不透明度可能会很好地解决这个问题。将其附加到文本元素:

.on('mouseover', function(d){
    var currentText = this;
    d3.selectAll('.pie-text').transition().style('opacity',function () {
       return (this === currentText) ? 1 : 0.4;
});
假设文本元素具有类饼图文本。这将使所有文本在悬停时的不透明度为0.4,鼠标下的文本除外。这是根据以下答案改编的:

如果要在鼠标离开文本后将不透明度更改回1,还需要附加mouseout事件

.on('mouseout', function(d){
    d3.selectAll('.pie-text').transition().style('opacity', 1)
;

使用这些方法,您可以在默认情况下隐藏文本,并使其仅在悬停在饼图上时显示,但这由您决定。

您好,首先谢谢!现在我的代码看起来是这样的。单击时,函数d{var currentText=this;d3.选择所有的'brm-piechart-labels'。transition.style'opacity',函数{return this==currentText?1:0.4;};};我已将鼠标悬停改为单击,因为它应该可以在移动设备上工作。现在,每当我点击一个文本元素时,所有的元素都会改变不透明度。很高兴能帮上忙。您的代码是否按照您的意愿工作?我认为不会,因为您是按ID而不是按类或其他属性选择的。ID对于每个元素都必须是唯一的。将.attrclass、brm图表标签附加到文本中,然后使用d3。选择所有“.brm图表标签”。如果它能工作,没关系,但我担心按ID选择可能会导致问题。是的,刚刚意识到我选择了父元素,所以选择了错误的选择器!现在它工作得很好。非常感谢你!