gpt4 book ai didi

javascript - vis.js setOptions 更改网络节点上的颜色

转载 作者:行者123 更新时间:2023-12-01 02:27:48 26 4
gpt4 key购买 nike

我正在使用 vis.js 来显示网络节点。我正在解析 JSON 中的节点数据并将其存储在数组中:

$.each(jsonObj, function(i, val) {  

var itemId = val.id;
var itemGroup = val.group;
var itemLabel = val.label;
var itemLevel = val.level;
var itemData = val.nodeData;
var itemX = val.x;
var itemY = val.y;
var nodeData = JSON.parse(val.nodeData);

nodes[nodeCnt] = { id: itemId, group: itemGroup, label: itemLabel, level: itemLevel, title: itemData, x: itemX, y: itemY, font: { color: colour }, color: { border: colour }};
nodeCnt++;

}

这工作完美,我可以显示我的网络:

var data = {
nodes: nodes,
edges: edges

};

var options = { ... }
network = new vis.Network( container, data, options );

我使用事件处理程序在单击节点时采取操作,我解析所单击节点的 ID(这是简写版本):

network.on("click", function (params) {

// parse node id
var nodeID = params['nodes']['0'];

}

我想更新节点的颜色,我尝试了各种变体,包括以下内容,但没有成功?

var options = {
nodes:{
id: nodeID,
borderWidth: 20,
color: {
border: '#000000',
background: '#000000',
border: '#000000',
highlight: {
border: '#2B7CE9',
background: '#D2E5FF'
}
}
}
}
network.setOptions(options);

我一直在尝试不同的方法来做到这一点。如果我从上述选项中删除 "id: nodeID," 参数,我希望所有节点都会更新,但没有一个节点被更新。

我的节点使用标准 ID:595191aa-98c6-4a4b-a0e0-4262df83e0de

有什么想法吗?

提前谢谢您。

最佳答案

对于网络,我相信颜色的处理方式使得您可以通过网络选项指定默认颜色属性,但如果您还为该网络中的各个节点提供颜色属性,则这些特定于节点的颜色属性将始终覆盖任何默认值你设置。

这就是为什么这对您不起作用 - 在点击事件上您尝试更改网络默认颜色属性,但由于您的节点具有自己的颜色取代属性,因此这些更改将始终被忽略。

看看http://jsfiddle.net/9knw26nc/1/

  var nodeID = params['nodes']['0'];
if (nodeID) {
var clickedNode = nodes.get(nodeID);
clickedNode.color = {
border: '#000000',
background: '#000000',
highlight: {
border: '#2B7CE9',
background: '#D2E5FF'
}
}
nodes.update(clickedNode);
}

只是简化了您的示例,但我通过更新数据集来反射(reflect)所单击的节点,直接更改节点颜色属性。

关于javascript - vis.js setOptions 更改网络节点上的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38768598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com