javascript - 如何在 cytoscape.js 中按类选择节点?

标签 javascript cytoscape.js

CYTOSCAPE.JS

我无法将样式应用于节点数据 (clLevel0) 中定义的类。我写了一个函数来解决这个问题。因此,该函数还以一种更简单的方式解释了我想做什么 ;-)

function setNodesClassStyles(cy, clas, styleobject)
 {
   var all = cy.nodes();
   for (i = 0; i < all.length; i++) {
       the_node = all[i];
       all_classes = the_node.data().classes;
       //alert(all_classes);
       if (all_classes != undefined) {
           all_classes = all_classes.split(' ');
           for (i = 0; i < all_classes.length; i++) {
               alert(all_classes[i]);
               if (clas == all_classes[i]) {
                   the_node.style(styleobject)
               }

           }
       }
   }
 };
setNodesClassStyles(cy, "clLevel0", {'background-color':'#00E'});

我试过这个(不工作):

{
  selector: ".clLevel0",
  style: {
    'background-color': '#EAA',
  }
},

在类为“clas”的节点上应用样式的正确方法是什么? 更多代码:

    var cy = cytoscape({

      container: document.getElementById('cy'), // container to render in

      elements: [ // list of graph elements to start with
      // LEVEL 0 NODE
        { // node 
          data: { id: 'me', name: 'Dirk\n@dickschrauwen', classes: 'clLevel0 clRoot', weight: 10000},

          "position": {
           "x": 600,
           "y": 400 },

        },

     // LEVEL 1 NODES
        {
          data: { id: 'skills', name: 'Skills',  }
        },  
        {
          data: { id: 'education', name: 'School' }
        },
        {
          data: { id: 'work', name: 'Jobs\nProjects' }
        },
        { 
          data: { id: 'passion', name: 'Passions' }
        },

// ....
  style: [
    {
      selector: 'node',
      style: {
        'height': 40,
        'width':  40,
        //'height': 20,
        //'width':  20,
        'background-color': '#EE0',
// ....

    {
      selector: ".clLevel0",
      style: {
        'background-color': '#EAA',
      }
    },

  ],
//...

最佳答案

document.addEventListener("DOMContentLoaded", function() {

  var cy = cytoscape({
    container: document.getElementById('cy'),
    elements: {
       nodes: [
          { data: { id: 'n', label: 'Olo' } },
          { data: { id: 'c'}, classes: 'className'}
    ]}
   });
  cy.style.fromJson([
      {
         selector: 'node',
         style: {
             'color': 'red'
         }
       },{
         selector: '.className',
         style: {
             'label': 'this has a class',
             'color': 'blue'
        }
      }
   ])
}); 

关于javascript - 如何在 cytoscape.js 中按类选择节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45572034/

相关文章:

javascript - Cytoscape.js 中是否可以有双向边缘?

javascript - 如何使用带钩子(Hook)的 react 功能组件测试句柄函数调用

javascript - 在禁用 JavaScript 的情况下使用 HTML 提交表单

javascript - 测试文本区域中数组中的所有关键字

javascript - 将 $scope 放在 Cytoscape 点击事件中

cytoscape.js - Cytoscape js - 每当单击节点时调用函数

javascript - AngularJS:如何获取$http的错误状态

javascript - jQuery onclick 创建并附加带有属性和子元素的元素

javascript - 如何配置图形以在不对节点位置进行硬编码的情况下显示向下指向的边缘?

javascript - 在鼠标光标位置添加 cytoscape 节点