gpt4 book ai didi

javascript - 如何动态渲染美人鱼流程图?

转载 作者:行者123 更新时间:2023-12-04 15:10:55 24 4
gpt4 key购买 nike

我正在使用 mermaid用于构建流程图的库。其工作原理是在 block 内有一个伪代码 - 特殊语法的命令,在此基础上在 block 中构建流程图。
我希望能够动态更改 block 的内容,并且脚本每次都重建 block 图。
我应该如何设置初始化?也许我应该在设置中添加一些回调函数?
我是这样初始化的:

mermaid.init({/*what setting parameters should be here?*/}, ".someClass"/*selector*/);
但该脚本不会呈现任何新命令。它仅呈现加载文档时存在的命令。
换句话说,我想在线编辑流程图。

function edit() {
const new_mermaid = document.createElement("div");
new_mermaid.classList.add("mermaid");
new_mermaid.classList.add(".someClass");
/*new_mermaid.innerHTML =
`graph TD
1[point 1] --> 2[point 2]`;*/
// it doesn't work when I append the new element dynamically!
new_mermaid.innerHTML = document.querySelector(".mermaid").innerHTML;
// it works always.
document.body.append(new_mermaid);
/* document.querySelector(".mermaid").innerHTML =
`
graph TD
A --> B`*/
// it doesn’t work with event listener
}
edit(); // it works
document.body.addEventListener("click", edit)
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<script>
// how to do it correctly?
mermaid.init({
noteMargin: 10
}, ".someClass");
</script>

<div class="mermaid someClass">
graph TD
1--> 2
3 --> 2
2 --> 1
</div>

最佳答案

看来,我知道答案了。看看下面的解决方案:

  document.querySelector("button").addEventListener("click", (e) => {
const output = document.querySelector(".flowchart");
if (output.firstChild !== null) {
output.innerHTML = "";
}
const code = document.querySelector(" textarea").value.trim();
let insert = function (code) {
output.innerHTML = code;
};
mermaid.render("preparedScheme", code, insert);
});
   <script src="https://unpkg.com/mermaid@7.1.0/dist/mermaid.min.js"></script>

<p>Input your data:</p>
<div class="input">
<textarea style="width:300px; height:200px"></textarea>
<br>
<button>render</button>
</div>
<div>
<p>output:</p>

<div class="render_container" style = "width:300px; height:200px; border:thin solid silver" >
<div class="flowchart"></div>
</div>
</div>

关于javascript - 如何动态渲染美人鱼流程图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65212332/

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