2015-05-15 3 views
2

Я использую D3, и когда я нахожусь на узле, я хочу, чтобы появилось текстовое поле со всеми атрибутами узлов, написанными на нем. Я сделал текстовое поле, и им возможность писать атрибуты я знаю, в этом текстовом поле:Как распечатать все атрибуты объекта

function onHover(){ 
    d3.selectAll("#nodeAttributes") 
      .text(function() { return (d.type); }) //random attribute i know    
      ; 
} 

Это называется на «наведении курсора мыши» на узле. Но что, если я не знаю, какие атрибуты у узла есть? Как я могу перебирать все атрибуты и записывать их все в текстовое поле. Мои данные выглядит примерно так:

nodes: [ 
     { 
      "type": "o", 
      "name": "fred", 
      "age": "16", 
      "class": "maths", 
. 
. 
. 
. 

     }, 

То, что я хочу, чтобы выводимый текст выглядеть следующим образом:

type: o 
name: fred 
age: 16 
class: maths 

Я уверен, как цикл по каждому атрибуту этого выбранного узла (г)

заранее спасибо

+0

Как насчет console.log()? – user2182349

+0

Я знаю, как написать текст, просто хочу, чтобы я мог передавать ему разные данные и всегда печатать эти данные. Таким образом, я не должен специально кодировать то, что его выводит, его переменная – thatOneGuy

+0

sorry @sgtBOSE я не понимаю, что вы говорите? – thatOneGuy

ответ

2

Вы можете перебирать свой объект со следующим кодом:

function onHover() { 
    d3.selectAll('#nodeAttributes').html(function (d) { 
    var str = ''; 
    for (var key in d) { 
     str += key + ': ' + d[key] + '<br/>' 
    } 
    return str; 
    } 
); 
} 
+0

перерыв не работает, но я могу это исправить. Все отлично работает, оцените быстрый ответ: D спасибо – thatOneGuy

+1

Вы должны заменить '.text' на' .html' – jmgross

Смежные вопросы