###現在やろうとしていること
HTMLのタグを加工選別し、配列にコピーして、多次元配列によって、そのHTMLの親ノード子ノードを再現するのを目指しています。配列の要素はHTMLのタグのID名にして、多次元配列から直接そのタグにアクセスできるようにしています。
例えば下記のようなHTML文書があったとします。
html
1<math id="math"> 2 <mi id="1">y</mi> 3 <mo id="2">=</mo> 4 <mfrac id="3"> 5 <mrow id="4"> 6 <mn id="6">1</mn> 7 </mrow> 8 <mrow id="5"> 9 </mrow> 10 </mfrac> 11</math>
これを多次元配列で表すと次のようになります。
javascript
1var mathArray = { 2 id: 'math', 3 array: [ 4 '1', 5 '2', 6 { 7 id: '3', 8 argument1: { 9 id: '4', 10 array: ['6'] 11 }, 12 argument2: { 13 id: '5', 14 array: [] 15 } 16 } 17 ] 18}
###出来ないこと
例えば、id="7"のタグを動的に下記の指定したところに入れることが目標とします。
javascript
1var point = mathArray['array'][2]['argument2']['array'][0]
タグを挿入する場合、appendChild()を使うのですが、その時どうしても親ノードを記述しないといけません。親ノードのidは次のようにして参照することが出来ます。
javascript
1var point2 = mathArray['array'][2]['argument']['id']
僕が分からないのは、どうやってpoint変数からpoint2変数のような参照をするかです。
僕が考えたプロセスは、
0. pointから['array'][0]を消す
0. ['id']を付け足す
なのですが、プロセス1のやり方が分かりません。
###僕が考えた不器用なやり方
予め、
var point = ['array', 2, 'argument2', 'array', 0];
と宣言して、for文を使って[]を足していき、最後にFunction()で文字列をメソッドに変換するやり方です。
多分時間がかかるので、もっと時間がかからない方法を探してます。
javascript
1var changeF = function(point) { 2 Faunction(point)(); 3} 4var connect = 'document.getElementById(mathArray'; 5for(var i = 0; i <= point.length - 3; i++) { 6 if(typeof mathArray[i] === 'string') { 7 connect += '["' + mathArray[i] + '"]'; 8 } else { 9 connect += '[' + mathArray[i] + ']'; 10 } 11} 12connect += '["id"]).appendChild(<入れたいElement>);'; 13changeF(connect);
###使用するブラウザ
使用するブラウザはFireFoxです。違うブラウザではMathMLが表示されません。
回答1件
あなたの回答
tips
プレビュー