2015-12-14 3 views
1

Я работаю над кодом примера здесь - http://bl.ocks.org/cjrd/6863459, чтобы создать ориентированный граф и играть с ним онлайн. Код уже есть функцияИзменить цвет заполнения узла d3.js

GraphCreator.prototype.changeTextOfNode 

Эта функция помещает редактируемый текст на узле, так что пользователь может изменить значение и вызывается, когда пользователь нажимает на узле, нажимая клавишу переключения. Теперь я хочу сделать что-то очень похожее. Я хочу, чтобы цвет узла изменялся при щелчке узла при нажатии клавиши Ctrl. Для этого, функция я придумал это -

GraphCreator.prototype.changeColorOfNode = function(d3node, d){ 
    try{ 
     d3node.style("fill","red"); 
    } 
    catch(e){ 
     alert(e.message); 
    } 
} 

На данный момент, я всегда изменить цвет на красный, просто чтобы проверить это работает. Я вижу, что вместо цвета заливки круга, представляющего узел, цвет шрифта текста в круге меняется на красный. Кто-нибудь знает, как я изменил цвет заливки?

+0

Ваш вопрос немного сбивает с толку. Ваш вопрос, как вам найти цвет узла, в частности 'd3node'? –

+0

Да. Как найти цвет, а затем установить цвет другого цвета. У фрагмента кода у меня меняется цвет шрифта, а не цвет заливки. –

ответ

2

В настоящее время вы применяете стиль заполнения к g элементам вместо кругов. Вот почему меняется только цвет текста. Вы должны попробовать, как показано ниже.

d3node.select("circle").style("fill","red"); 

Чтобы найти существующий цвет узла

d3node.select("circle").style("fill"); //returns current fill color applied 
+0

Удивительный! Проблема решена .. спасибо. –

+0

Работает в d3 v4. –