Ash*_*rya 2 javascript ajax typeset mathjax
我正在尝试使用MathJax将在 HTML 文本框中输入的方程(在 Tex 中)查看为数学方程。如果方程没有正确查看,我需要在数学方程中编辑方程并查看它。
第一次,它工作正常。但在执行编辑后,Mathjax 排版命令显示错误。要求您通过它,并提出可能的错误。
我使用的 HTML 是:
<html>
<head>
<title>
Equation Edit
</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3.0.0/es5/tex-mml-chtml.js"></script>
</head>
<body>
<strong> Here is the result :<br></strong>
<input type="text" id=input value="\(ax^2 + bx + c = 0\)">
<div id="qPreview"></div>
<button id="check">Click</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我使用的脚本是:
<script type="text/javascript">
var eq;
$("#check").click(function(){
eq=document.getElementById("input").value;
document.getElementById("qPreview").innerHTML=eq;
MathJax.typeset(qPreview[0]);
});
</script>
Run Code Online (Sandbox Code Playgroud)
当我单击按钮时,它第二次显示以下错误:
未捕获的类型错误:无法在 l.append (tex-mml-chtml.js:1) 处读取 null 的属性“appendChild”
我是 javascript 新手。我预先感谢您分享任何错误或建议,以使代码正常工作。
我遇到了同样的问题,我认为这可能是一个错误。无论如何,它可以通过将方程渲染到“qPreview”div 内的辅助“p”标签来解决,然后在修改方程时删除并重新创建该标签。例如:
$("#check").click(function(){
$("#qPreview").empty().append("<p>" + $("#input").val() + "</p>");
MathJax.typeset(["#qPreview"]);
});Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/npm/mathjax@3.0.0/es5/tex-mml-chtml.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<strong> Here is the result :<br></strong>
<input type="text" id=input value="\(ax^2 + bx + c = 0\)">
<div id="qPreview"></div>
<button id="check">Click</button>Run Code Online (Sandbox Code Playgroud)
对您的代码的一些说明:
getElementById函数可以让您的生活更轻松:您可以编写$("#input").val()而不是document.getElementById("input").valueqPreview没有定义的变量,因此MathJax.typeset(qPreview[0])会导致错误。MathJax.typeset()期望没有参数或列表作为参数。(这就是为什么"#qPreview"在我的代码中用括号括起来的原因)。有关更多信息,请参阅文档:
这两个函数都有一个可选参数,它是一个元素数组,其内容应该被处理。元素可以是实际的 DOM 元素,也可以是元素或元素集合的 CSS 选择器字符串。提供元素数组将仅将排版限制为这些元素的内容。
| 归档时间: |
|
| 查看次数: |
1066 次 |
| 最近记录: |