ボタンをクリックするだけで、現在選択されている要素の前に要素を挿入したい。最後にクリックされた要素 ID を変数に格納することで、「選択」を処理します。
私のコード:
初期化.js
(function()
{
main.page = parent.document;
}
)();
/**
*
* Easier than console.log();
*
*/
function echo(string)
{
console.log(string);
}
item_document_elements.js
// Example of the 2 parameters:
// controls.inserting_this = "canvas"
// select_element.selected = "default_div"
main.page.getElementById("new_element_go").addEventListener
(
"click",
function()
{
controls.insert_before(controls.inserting_this, select_element.selected);
},
false
);
controls.insert_before = function(element, selected)
{
echo("DEFINITELY INSERTING BEFORE");
var id = main.page.getElementById("new_element_id_input");
var name = main.page.getElementById("new_element_name_input");
// Return false if the input field is empty.
if(id.value == "" || id.value == null || id.value == "undefined")
{
id.style.color = "#F00";
id.value = "ID required";
id.focus();
return false;
}
// Check if the element ID is in the array.
// If indexOf returns -1, it doesn't exist.
if(create.element_array["name"].indexOf(id.value) != -1)
{
id.style.color = "#F00";
id.value = "ID already exists";
id.focus();
return false;
}
else
{
var master_parent = main.page.getElementById(selected).parentNode;
var create_element = main.page.createElement(element);
create_element.id = id.value;
create_element.style.border = "1px solid black";
create_element.style.width = "auto";
create_element.style.height = "auto";
create_element.textContent = "New " + element;
// Add element to array of elements in the document.
create.element_array["name"].push(id.value);
create.element_array["name"]["properties"].push(new element_properties);
master_parent.insertBefore(create_element, selected);
}
// End blackout window and remove popup.
controls.end_darkness();
}
このドキュメントには、次の内容のみが含まれています。
<div id="container" class="hovering selected" style="margin-right: auto; margin-left: auto; height: auto;">
<div id="default_div" style="width: auto; height: 120px; border: 1px solid #999;"></div>
</div>
上記のコードは常に最後の要素の後に新しい要素を挿入し、前に挿入することはありません。私が知る限り、機能は正しく使用されています。そうでない場合は、アドバイスしてください。
私は何を間違っていますか?
解像度
問題は、insertBefore 関数のパラメーター 2 が、文字列ではなくノードでなければならないことです。解決策は次のとおりです。
master_parent.insertBefore(create_element, main.page.getElementById(selected));