【发布时间】:2022-12-04 05:09:53
【问题描述】:
让我简化脚本:
-
获取用户输入
-
计算东西
-
使用 MathJax 将计算的内容添加到 HTML
问题是,MathJax 在开始时运行,当时还没有计算这些东西。它在方程式中显示“未定义”。后来,当它被计算时,方程看起来像这样
$ l_D = 3m $有什么方法可以在特定点运行 MathJax 吗?还是在计算完这些东西后重新运行它?
【问题讨论】:
标签: javascript mathjax
让我简化脚本:
获取用户输入
计算东西
使用 MathJax 将计算的内容添加到 HTML
问题是,MathJax 在开始时运行,当时还没有计算这些东西。它在方程式中显示“未定义”。后来,当它被计算时,方程看起来像这样$ l_D = 3m $
有什么方法可以在特定点运行 MathJax 吗?还是在计算完这些东西后重新运行它?
【问题讨论】:
标签: javascript mathjax
是的,有一种方法可以在代码中的特定位置运行 MathJax。 MathJax 提供了一种排版方法,您可以使用该方法在特定时间排版页面的一部分。在计算出方程的值后,您可以使用此方法排版方程。这是您如何执行此操作的示例:
// Calculate your values
let l_D = 3m;
// Add the calculated value to the page using MathJax
let math = document.createElement('math');
math.innerHTML = '$l_D = ' + l_D + '$';
document.body.appendChild(math);
// Typeset the math element using MathJax
MathJax.typeset(math);
这段代码会将l_D的计算值作为MathJax方程添加到页面中,然后使用排版方法对方程进行排版,使其能够被MathJax正确渲染。
或者,如果您有大量需要排版的方程式,您可以使用 typesetPromise 方法一次排版页面上的所有方程式。此方法返回一个承诺,该承诺将在排版所有方程式后得到解决,因此您可以使用它来确保在代码继续之前正确呈现方程式。这是您如何执行此操作的示例:
// Calculate your values
let l_D = 3m;
// Add the calculated value to the page using MathJax
let math = document.createElement('math');
math.innerHTML = '$l_D = ' + l_D + '$';
document.body.appendChild(math);
// Typeset all of the equations on the page using MathJax
MathJax.typesetPromise().then(function () {
// Your code here, to be executed after all of the equations have been typeset
});
这段代码会将 l_D 的计算值作为 MathJax 方程添加到页面,然后使用 typesetPromise 方法排版页面上的所有方程。 then 方法中的代码将在排版完所有方程式后执行,因此您可以确保当您的代码继续时,您的方程式将被正确呈现。
【讨论】: