Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery动态插入MathML_Javascript_Jquery_Xml_Dom_Mathml - Fatal编程技术网

Javascript 使用jQuery动态插入MathML

Javascript 使用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/

我编写了一个令人讨厌的小javascript函数,它创建了一个MathML矩阵DOM。我的问题是,当我用jQuery的append(MathMLDOM)插入DOM时;它没有正确显示。但是,当我复制粘贴生成的XML并手动将其插入HTML文档时,它显示得很好。为什么追加不起作用?是否有某种方法可以动态插入MathML DOM


关于

是否附加了正确的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元素,也需要在适当的命名空间中创建它们。