1

ボタンをクリックするだけで、現在選択されている要素の前に要素を挿入したい。最後にクリックされた要素 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));
4

0 に答える 0