Tengo varios div que contienen datos que quiero usar como id , etiqueta , título , etc. para los nodos de mi red.

Hice un bucle for que obtiene todos los div existentes con una clase específica y luego almacena el contenido de todos los div secundarios en variables. Para generar tantos nodos como haya div, supongo que el siguiente paso es poner la matriz de nodos dentro del bucle, pero si lo hago, la red no se carga.

Aquí está el código que tengo ahora: genera solo un nodo, que contiene los datos del último div, ya que la matriz de nodos está fuera del ciclo. ¿Cómo lo pongo correctamente en el bucle?

    var nombreNodes= $('.personnage');
    for (var i = 0; i < nombreNodes.length; i++) {
        var nodesId = document.getElementsByClassName('id')[i].innerHTML;
        var nodesLabel = document.getElementsByClassName('label')[i].innerHTML;
        var nodesTitle = document.getElementsByClassName('title')[i].innerHTML;
        var nodesGroup = document.getElementsByClassName('group')[i].innerHTML;
        var nodesFontSize = document.getElementsByClassName('fontSize')[i].innerHTML;
        var nodesFontColor = document.getElementsByClassName('fontColor')[i].innerHTML;
        var nodesFontFace = document.getElementsByClassName('fontFace')[i].innerHTML;
    }

    // create an array with nodes
    var nodes = [
        {id: nodesId, 
        label: nodesLabel, 
        title: nodesTitle, 
        group: nodesGroup, 
        font: nodesFontSize + ' ' + nodesFontFace + ' ' + nodesFontColor},
    ];
0
clem_41 6 oct. 2019 a las 22:20

1 respuesta

La mejor respuesta

Como creo, debe agregar los nodos a una matriz, que estará disponible desde fuera del bucle for. El siguiente ejemplo debería funcionar (actualmente no probado)

var nodes = [];
var nombreNodes= $('.personnage');
for (var i = 0; i < nombreNodes.length; i++) {
    var nodesId = document.getElementsByClassName('id')[i].innerHTML;
    var nodesLabel = document.getElementsByClassName('label')[i].innerHTML;
    var nodesTitle = document.getElementsByClassName('title')[i].innerHTML;
    var nodesGroup = document.getElementsByClassName('group')[i].innerHTML;
    var nodesFontSize = document.getElementsByClassName('fontSize')[i].innerHTML;
    var nodesFontColor = document.getElementsByClassName('fontColor')[i].innerHTML;
    var nodesFontFace = document.getElementsByClassName('fontFace')[i].innerHTML;

    nodes.push({
        id: nodesId, 
        label: nodesLabel, 
        title: nodesTitle, 
        group: nodesGroup, 
        font: nodesFontSize + ' ' + nodesFontFace + ' ' + nodesFontColor
    });
}
// This dataset can be added to the vis.network
var dataSet = new vis.DataSet(nodes);
0
Cemron 7 oct. 2019 a las 14:56