2017-02-21 14 views
1

Я готов искать и выделять узлы, содержащие заданную строку. sampled3 js выделить узлы, содержащие заданную строку

Для этого я звоню методу set_focus

function set_focus(d) 
{ 
    text.style("opacity", function(o) { 
     return isConnected(d.id, o.id) ? 1 : null; 
    }); 

    img.style("opacity", function(o) { 
     return isConnected(d.id, o.id) ? 1 : null; 
    }); 

    link.style("opacity", function(o) { 
     return o.source.index == d.index || o.target.index == d.index ? 1 : null; 
    }); 

} 

Выше функции условно настройка прозрачности элементов. Я хочу установить непрозрачность узлов, которые связаны друг с другом. Но я не хочу нарушать непрозрачность тех узлов, которые не связаны.

Для получения более разъяснений:

return isConnected(d.id, o.id) ? 1 : null; 

Я не хочу, чтобы вернуть непрозрачность, если isConnected == false

Обязательно:return isConnected(d.id, o.id) ? 1 : "here return the current opacity value";

Happening:return isConnected(d.id, o.id) ? 1 : "returning zero or null";

ответ

1

Вы можете получитьзначение непрозрачности текущего элемента с добытчиком:

d3.select(this).style("opacity"); 

Затем, вы можете использовать его в тройном операторе:

text.style("opacity", function(o) { 
    var current = d3.select(this).style("opacity"); 
    return isConnected(d.id, o.id) ? 1 : current; 
}); 
+0

Благодаря Херардо, я попробовал то, что вы сказали ... но var current = d3.select (this) .attr ("opacity"); возвращает null. Нужно ли устанавливать непрозрачность текста во время его создания? –

+1

Хорошо получилось, var current = d3.select (this) .style ("opacity"); заменив attr на стиль .... Спасибо! –