Javascript 使用jQuery动态插入MathML
我编写了一个令人讨厌的小javascript函数,它创建了一个MathML矩阵DOM。我的问题是,当我用jQuery的append(MathMLDOM)插入DOM时;它没有正确显示。但是,当我复制粘贴生成的XML并手动将其插入HTML文档时,它显示得很好。为什么追加不起作用?是否有某种方法可以动态插入MathML DOMJavascript 使用jQuery动态插入MathML,javascript,jquery,xml,dom,mathml,Javascript,Jquery,Xml,Dom,Mathml,我编写了一个令人讨厌的小javascript函数,它创建了一个MathML矩阵DOM。我的问题是,当我用jQuery的append(MathMLDOM)插入DOM时;它没有正确显示。但是,当我复制粘贴生成的XML并手动将其插入HTML文档时,它显示得很好。为什么追加不起作用?是否有某种方法可以动态插入MathML DOM 关于是否附加了正确的XML名称空间?这对我很有用: $('#foo').append('<math xmlns="http://www.w3.org/1998/Math/
关于是否附加了正确的XML名称空间?这对我很有用:
$('#foo').append('<math xmlns="http://www.w3.org/1998/Math/MathML"><msup><mi>a</mi><mi>i</mi></msup><mo>+</mo><mi>b</mi></math>')
$('foo')。追加('ai+b'))
没有名称空间,就没有MathML。是的,您需要名称空间,它需要在元素创建时给出。document对象的createElementNS()方法完成以下任务:
document.createElementNS("http://www.w3.org/1998/Math/MathML", "element");
其中“element”是一个字符串,如“mo”、“mfrac”、“math”等。您可以将其封装在插入正确名称空间的函数中。无论如何,它在Firefox中也能工作
var mathml = function(el) {
return document.createElementNS("http://www.w3.org/1998/Math/MathML", el);
};
之后,您可以从中创建jQuery对象:
$mi1 = $( mathml("mi") ).text(a);
$mn1 = $( mathml("mn") ).text(2);
$term1 = $( mathml("msup") ).append($mi1).append($mn1);
将为您提供内容为a2的$term1 jQuery对象。谢谢您的输入。我的错误是使用jQueryDOM元素。在代码段中使用普通xml时,它也可以工作。即使使用DOM元素,也需要在适当的命名空间中创建它们。