Javascript 使用MathJax向DOM添加元素?

Javascript 使用MathJax向DOM添加元素?,javascript,mathjax,Javascript,Mathjax,我试图动态创建一个元素,然后对其进行一些处理。我试图在新创建的元素上使用MathJax,但无法在其上使用MathJax.Hub.getAllJax 我在控制台中键入此命令以进行测试:(MathOutput1在HTML中定义) MathJax.HTML.addElement(document.body,“div”{id:“blah”},['``']); ​` `​​ MathJax.Hub.getAllJax(“blah”); [] getAllJax(“MathOutput1”) [对象] 有

我试图动态创建一个元素,然后对其进行一些处理。我试图在新创建的元素上使用MathJax,但无法在其上使用MathJax.Hub.getAllJax

我在控制台中键入此命令以进行测试:(MathOutput1在HTML中定义)

MathJax.HTML.addElement(document.body,“div”{id:“blah”},['``']);
​` `​​
MathJax.Hub.getAllJax(“blah”);
[]
getAllJax(“MathOutput1”)
[对象]
有没有一种方法可以动态地创建一个可以执行操作的元素

我确实确认了div元素blah被添加到了dom中(至少根据chrome的说法)“

谢谢:)

这里的问题是,您试图在
MathJax.Hub
例程完全完成之前访问新元素

要解决此问题,可以在
Hub
的回调队列上的回调函数中调用
MathJax.Hub.getAllJax()

或者,您可以注册一个信号监听器,该监听器将在某个事件发生时被触发(在本例中,在排版新数学时):


有关更多信息,请参阅。

我可能错了,但您可能必须先排版元素,然后才能检索它。类似于
MathJax.Hub.Queue(['Typeset',MathJax.Hub,getElementById('blah'))
无论如何,对于最新版本的MathJax,您需要在第一个代码段中插入另一行:
MathJax.HTML.addElement(…)
MathJax.Hub.Queue([“Typeset”,MathJax.Hub,“blah]”)
MathJax.Hub.Queue(showBlahElement)
如果不使用
Typeset
命令,getAllJax将返回一个空数组。试一试:
MathJax.HTML.addElement(document.body, "div", {id: "blah"}, ['` `']);
<div id=​"blah">​` `​</div>​
MathJax.Hub.getAllJax("blah");
[]
MathJax.Hub.getAllJax("MathOutput1")
[Object]
function showBlahElement () {
    console.log(MathJax.Hub.getAllJax("blah"));
}

MathJax.HTML.addElement(document.body, "div", {id: "blah"}, ['$$a=b$$']);
MathJax.Hub.Queue(showBlahElement);
MathJax.Hub.Register.MessageHook("New Math", function (message) {
  console.log(MathJax.Hub.getAllJax("blah"));
});

MathJax.HTML.addElement(document.body, "div", {id: "blah"}, ['$$a=b$$']);