1

MathML Matrix DOM を作成する厄介な小さな JavaScript 関数のスクリプトを作成しました。私の問題は、jQuery の append(MathMLDOM); で DOM を挿入するときです。正しく表示されていません。しかし、生成された XML をコピーして HTML ドキュメントに手動で挿入すると、問題なく表示されます。追加が機能しないのはなぜですか? MathML DOM を動的に挿入する方法はありますか?

よろしく

4

2 に答える 2

1

適切な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>')

名前空間もMathMLもありません。

于 2012-11-29T08:32:23.130 に答える
1

はい、名前空間が必要です。要素の作成時に指定する必要があります。ドキュメント オブジェクトの createElementNS() メソッドは、これを実現します。

document.createElementNS("http://www.w3.org/1998/Math/MathML", "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);

コンテンツが2の $term1 jQuery オブジェクトが得られます。

于 2014-01-27T18:19:38.650 に答える