3

動的に作成される階層要素に少し問題があります。
場所を変更するために使用しようとしましinsertBeforeたが、運が悪く、エラーは発生しませんが、それでも他の要素の下に要素が表示されます。

と呼ばれるクラスを作成し、dice-window-wrapperそれを に追加するこの関数がありpage-content-wrapperます。

var outerDiv = createElementWithClass('div', 'dice-window-wrapper'),
innerDiv = createElementWithClass('div', 'dice-menubar-wrapper');
outerDiv.appendChild(innerDiv);
document.getElementById("page-content-wrapper").appendChild(outerDiv);

<div class="dice-window-wrapper">...</div>
ここでは問題ありません。

<li>次に、この関数を使用して、いくつかのタグを含む順序付けられていないリストを追加します。

icon_ul = createElementWithOutClass('ul');
var icon_ul = document.getElementById("page-menu-wrapper").appendChild(icon_ul);

icon_li = createElementWithId('li','icon-dice');
icon_ul.appendChild(icon_li);
document.getElementById("ul");

そしてプリントは<ul><li id="icon-dice"></li></ul>

私が言ったように、問題<div class="dice-window-wrapper">...</div>は string の下にあるはず<ul><li id="icon-dice"></li></ul>です。

しかし、icon_ul関数を からappendChildに変更してもinsertBefore、何も変わらないようです。

4

1 に答える 1

1

これを試して:

document.getElementById("page-menu-wrapper").insertBefore(icon_ul, outerDiv);

insertBeforeには 2 つのパラメーターが必要です。追加するものと、追加するものの前です。

ここのドキュメントを参照してください:

var insertedElement = parentElement.insertBefore(newElement, referenceElement);
//   ^ returns         ^add to this element:      ^ this new element, ^ before this existing element.

さて、ここでの問題は次のとおりです。

document.getElementById("page-menu-wrapper").insertBefore(icon_ul, outerDiv);

そこに、の親はouterDivありません"page-menu-wrapper"。その行を次のように置き換えます。

document.getElementById("page-content-wrapper").insertBefore(icon_ul, outerDiv);

または置き換えます:

document.getElementById("page-content-wrapper").appendChild(outerDiv);
// With
document.getElementById("page-menu-wrapper").appendChild(outerDiv);
于 2013-02-01T09:30:06.403 に答える