这是我用来为TeX添加脚本的函数:
function change() {
var format = document.getElementById("format");
var original_text = document.getElementById("question");
var s = document.createElement('script');
s.setAttribute('type', 'math/tex; mode=display');
s.value = {x};
var newdiv = document.createElement('div');
newdiv.innerHTML = s.toString();
document.body.appendChild(newdiv);
}
但这显示错误为ReferenceError: Can't find variable: change
我哪里出错了?
答案 0 :(得分:1)
拒绝这一行:
s.value = {x};
括号用于 JSON (JavaScript Object Notation) Javascript的对象文字语法。期望你完成一个hashmap,如下所示:
s.value = {x: 'someValue'}
你的结束括号出乎意料。但是,实际上想要的是一个字符串。就Javascript而言,字符串对LaTex来说意味着特殊的事实只是巧合:
s.value = '{x}';
这是否能实现你的最终目标还有待观察,但如果没有,那么你可能需要打开一个单独的问题。快乐的编码< 3
答案 1 :(得分:1)
我猜你可能想做类似的事情:
function change() {
var format = document.getElementById("format");
var original_text = document.getElementById("question");
var s = document.createElement('script');
s.setAttribute('type', 'math/tex; mode=display');
s.innerHTML = "{x}";
var newdiv = document.createElement('div');
newdiv.appendChild(s);
document.body.appendChild(newdiv);
}
调用change()
函数会在div
标记的末尾添加<body>
脚本标记,如下所示:
<div><script type="math/tex; mode=display">{x}</script></div>
答案 2 :(得分:0)
我终于找到了问题所在。这是我在html页面中转换或呈现MathJax脚本的错误方式。它应该像这样修复:
添加另一个脚本:
<script>
//
// Use a closure to hide the local variables from the
// global namespace
//
(function () {
var QUEUE = MathJax.Hub.queue; // shorthand for the queue
var math = null; // the element jax for the math output.
//
// Get the element jax when MathJax has produced it.
//
QUEUE.Push(function () {
math = MathJax.Hub.getAllJax("MathOutput")[0];
});
//
// The onchange event handler that typesets the
// math entered by the user
//
window.UpdateMath = function (TeX) {
QUEUE.Push(["Text",math,"\\displaystyle{"+TeX+"}"]);
}
})();
</script>
然后它可以像这样轻松转换:
<p>
Type some TeX code: (Example: \int\sin{x}\;{dt})
</p>
<input id="MathInput" class="form-control" type="text" size="50" onchange="UpdateMath(this.value)" />
<p>
<div id="MathOutput">
You typed: ${}$
</div>
输出如下:
感谢@DemoUser的宝贵回答。