Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript vis.js setOptions在网络节点上更改颜色_Javascript_Jquery_Vis.js - Fatal编程技术网

Javascript vis.js setOptions在网络节点上更改颜色

Javascript vis.js setOptions在网络节点上更改颜色,javascript,jquery,vis.js,Javascript,Jquery,Vis.js,我正在使用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;

我正在使用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(这是速记版本):

我想更新节点的颜色,我尝试了各种变化,包括以下都没有用

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

有什么想法吗


提前感谢。

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

这就是为什么这对您不起作用的原因——在单击事件时,您试图更改网络默认颜色属性,但这些更改将始终被忽略,因为您的节点具有自己的颜色替换属性

看看


刚才简化了您的示例,但我正在通过更新数据集来直接更改已单击节点的节点颜色属性,以反映这一点。

谢谢您的回复。我使用的不是数据集,而是数组。如何使用上面提到的数组更改颜色:节点[nodeCnt]={id:itemId,group:itemGroup,label:itemLabel,level:itemLevel,title:itemData,x:itemX,y:itemY,字体:{color:color},颜色:{border:color};nodeCnt++;我建议您开始使用数据集。它需要对您的程序进行最小的更改,正如我的示例所示,它为您提出的问题提供了很多好处。数据集允许我根据单击的ID取出节点,在我对节点的属性进行更改后,只需调用update()方法,数据集就会处理其余部分,以更新基础数据并在网络可视化中反映这些更改。
var options = {
    nodes:{
        id: nodeID,
        borderWidth: 20,
        color: {
            border: '#000000',
            background: '#000000',
            border:  '#000000',
            highlight: {
                border: '#2B7CE9',
                background: '#D2E5FF'
            }
        }
    }
}
network.setOptions(options);
  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);
  }