![](/img/trans.png)
[英]Adding to innerHTML of document.body causes jQuery .on() to not find its target
[英]innerHTML adding scripts causes error
這是我用來為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
的錯誤ReferenceError: Can't find variable: change
我哪里做錯了?
它拒絕此行:
s.value = {x};
括號用於JSON(JavaScript對象表示法) Javascript的對象文字語法。 期望您完成一個哈希圖,如下所示:
s.value = {x: 'someValue'}
您的結尾括號是意外的。 但是,您真正想要的是一個字符串。 就Java而言,字符串對LaTex意味着特殊的事實只是一個巧合:
s.value = '{x}';
這是否達到您的最終目標還有待觀察,但是如果沒有達到目標,您可能需要提出一個單獨的問題。 快樂編碼<3
我想您可能想做些類似的事情:
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()
函數會在<body>
標簽的末尾添加一個帶有script標簽的div
,如下所示:
<div><script type="math/tex; mode=display">{x}</script></div>
我終於弄清楚了我的問題所在。 這是我在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的寶貴回答。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.