总是无法在“节点”上执行“ removeChild”:参数1不是“节点”类型

时间:2019-11-12 06:49:15

标签: javascript

任何人都可以帮助我如何删除参数1。这是我总是得到的错误:

  

无法在“节点”上执行“ removeChild”:参数1的类型不是“节点”

<script src="assets/js/minicart.js"></script>
<script>
    counter = 1;
    $(".apply").click(function () {
        var root_container = document.getElementById("root-container");
        var container = document.createElement('div');
        var name_lists = document.getElementById('food-names');
        var price_lists = document.getElementById('food-prices');
        container.className="form-controll";
        container.id= counter;

        var input_name = document.createElement('input');
        var input_price = document.createElement('input');
        var button = document.createElement('button');
        var br = document.createElement('br')
        var input_total = document.createElement('input')

        container.className="modal-body row ";

        button.className  = "btn btn-danger delete1";
        button.name = "counter";
        button.type = "button";
        button.id = counter;
        button.onclick = "remove";
        button.appendChild(document.createTextNode("X"));
        counter++;

        input_name.value = $("#" + this.name ).html().trim();
        input_name.className = "text-center ";
        input_name.style.border = 'none';
        input_name.name= $("#" + this.name).html().trim();
        input_name.setAttribute("readonly", true)
        name_lists.value = name_lists.value + "=" + $("#" + this.name).html().trim();

        input_price.value = this.id.trim();
        input_price.className = "text-center";
        input_price.style.border = 'none';
        input_price.name=  this.id.trim();
        input_price.setAttribute("readonly", true)
        price_lists.value = price_lists.value + "=" + this.id.trim();

        container.appendChild(input_name);
        container.appendChild(input_price);
        container.appendChild(button);
        container.appendChild(br);

        root_container.appendChild(container);
    });

    $(document).on("click",'.delete1',function(){
        console.log('deleting node number -' + this.id-1);
        counter = -0;

        var root_container = document.getElementById("root-container");

        root_container.removeChild(root_container.childNodes[this.id]);

        for(i=0;i<counter.length;i++){
        }
    });
</script>

1 个答案:

答案 0 :(得分:0)

我并没有仔细阅读所有代码,而是看到了代码

var root_container = document.getElementById("root-container");

root_container.removeChild(root_container.childNodes[this.id]);

在id有效且唯一且您拥有this.id之前,这段代码是好的且可行的,我认为问题出在this.id中,this.id是什么,我确定问题在那里,希望它有助于。 快速提示使用Chrome调试器工具,并在鼠标单击时添加了事件侦听器断点(“源”选项卡>右侧导航>事件侦听器断点>鼠标>单击),请选中此框。您的浏览器将在此事件上中断,然后检查此事件。 或者,您也可以通过控制台来解决这个问题,但是通过上述方法,您可以自己一步一步发现问题,希望对您有所帮助