(Vis.js 网络)如何将节点数组放入循环中以获取我的数据?
(Vis.js network) How do I put the nodes array in a loop to get my data?
我有几个 div
包含我想用作 id、label、 的数据我的网络节点的 title 等。
我创建了一个 for
循环,它获取所有现有的 div
和特定的 class,然后将所有子 div
的内容存储在变量中。
为了生成与 div
一样多的节点,我假设下一步是将节点数组放入循环中,但如果这样做,网络不会加载。
这是我现在的代码:它只生成一个节点,包含最后一个 div
的数据,因为节点数组不在循环中。我如何正确地将它放入循环中?
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},
];
正如我所想,您需要将节点添加到数组中,该数组可从 for 循环外部使用。以下示例应该有效(目前未经测试)
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);
我有几个 div
包含我想用作 id、label、 的数据我的网络节点的 title 等。
我创建了一个 for
循环,它获取所有现有的 div
和特定的 class,然后将所有子 div
的内容存储在变量中。
为了生成与 div
一样多的节点,我假设下一步是将节点数组放入循环中,但如果这样做,网络不会加载。
这是我现在的代码:它只生成一个节点,包含最后一个 div
的数据,因为节点数组不在循环中。我如何正确地将它放入循环中?
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},
];
正如我所想,您需要将节点添加到数组中,该数组可从 for 循环外部使用。以下示例应该有效(目前未经测试)
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);