У меня есть простой график русалки на html-странице:
<html>
<body>
<pre class = "mermaid">
stateDiagram
OFF --> ON
ON --> OFF
classDef selected fill:yellow,font-weight:bold,stroke-width:2px
class OFF selected
</pre>
<script type = "module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
mermaid.initialize({ startOnLoad: false });
await mermaid.run();
</script>
</body>
</html>
Это выглядит так:
У меня есть стиль selected, который выделяет текущий выбранный узел желтым цветом, в данном случае OFF.
Я хотел бы иметь возможность динамически изменять текущий выбранный узел изображения с ВЫКЛ на ВКЛ и наоборот.
Есть ли в API-интерфейсе русалки способ динамически применять стили или иным образом изменять стиль объектов на графике динамически во время выполнения с использованием JS?





Один из способов сделать это — динамически добавить класс selected к нужному узлу:
<html>
<body>
<pre class = "mermaid">
stateDiagram
OFF --> ON
ON --> OFF
classDef selected fill:yellow,font-weight:bold,stroke-width:2px
</pre>
<script type = "module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
mermaid.initialize({ startOnLoad: false });
await mermaid.run();
document.querySelectorAll('g').forEach((g) => {
g.classList.remove('selected');
});
document.querySelector('g[data-id=ON]').classList.add('selected');
await mermaid.run();
</script>
</body>
</html>
Я думаю, что на данный момент это лучший вариант