Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在DOM中删除和追加_Javascript_Jquery_Dom - Fatal编程技术网

Javascript 在DOM中删除和追加

Javascript 在DOM中删除和追加,javascript,jquery,dom,Javascript,Jquery,Dom,这个问题我已经研究了一段时间了,但我似乎无法解决它。我有一个复选框,当选中时,会删除包含文本框的div。取消选中该复选框后,上述文本框应返回页面。删除可以工作,但追加不能 这就是我目前在代码方面的工作: $('#ResultsNoData1').click(function () { var parent = document.getElementById('Results1').parentNode; var child = document.getElementById('R

这个问题我已经研究了一段时间了,但我似乎无法解决它。我有一个复选框,当选中时,会删除包含文本框的div。取消选中该复选框后,上述文本框应返回页面。删除可以工作,但追加不能

这就是我目前在代码方面的工作:

$('#ResultsNoData1').click(function () {
    var parent = document.getElementById('Results1').parentNode;
    var child = document.getElementById('Results1');

    if (this.checked) {
        parent.removeChild(child);
    }
    else {
        parent.appendChild(child);
    }
});
我的原始设计是通过以下方式实现的:

$('#ResultsNoData1').click(function () {
    (this.checked) ? $('.results1').hide() : $('.results1').show();
});
但是,我需要重新创建的功能实际上是从该文本框中删除数据,使其无法在站点上访问,同时隐藏文本框本身。这并没有提供那种功能

给你:

您的问题是,您试图在单击中设置父项,但一旦删除子项,它将失败

var parent = document.getElementById('Results1').parentNode;
var child = document.getElementById('Results1');
$('#ResultsNoData1').click(function () {
    if (this.checked) {
        node = parent.removeChild(child);
    }
    else {
        parent.appendChild(child);
    }
});
给你:

您的问题是,您试图在单击中设置父项,但一旦删除子项,它将失败

var parent = document.getElementById('Results1').parentNode;
var child = document.getElementById('Results1');
$('#ResultsNoData1').click(function () {
    if (this.checked) {
        node = parent.removeChild(child);
    }
    else {
        parent.appendChild(child);
    }
});

您需要显示和隐藏该文本框,而不是删除该文本框

$('#ResultsNoData1').click(function () {    
    if (this.checked) {
        $("#Results1").hide();
    }
    else {
        $("#Results1").show();
    }
});

您需要显示和隐藏该文本框,而不是删除该文本框

$('#ResultsNoData1').click(function () {    
    if (this.checked) {
        $("#Results1").hide();
    }
    else {
        $("#Results1").show();
    }
});

您的做法是正确的,但缺少一件小事,需要从文本框中删除值

$('#ResultsNoData1').click(function () {
    (this.checked) ? $('.results1').hide() : $('.results1').show().val("");
});


这是正确的路线显示/隐藏文本区域

您做得很对,但缺少一件小事需要从文本框中删除值

$('#ResultsNoData1').click(function () {
    (this.checked) ? $('.results1').hide() : $('.results1').show().val("");
});


这是正确的路线显示/隐藏文本区域

为什么不先设置子对象,然后获取相对于它的父对象?Cmon人@因为我不想完全重组他的代码。一步一个脚印。你的不起作用,因为一旦你在点击功能中删除了子项。那么下次调用click事件时,它将无法设置父变量,因为DOM中不再存在子变量。为什么不先设置子变量,然后获取相对于它的父变量?Cmon人@因为我不想完全重组他的代码。一步一个脚印。你的不起作用,因为一旦你在点击功能中删除了子项。然后下次调用click事件时,它无法设置父变量,因为DOM中不再存在子变量。如果删除它,它将消失。您不能再添加它。你必须添加一个新的文本框,或者根本不删除它,而是隐藏它。只是出于好奇,为什么你对一些位使用纯Javascript,对其他位使用jQuery?我混合使用Javascript和jQuery,因为老实说,我是个糟糕的程序员。我想两者都用对我的学习会有好处。如果你把它拿走,它就不见了。您不能再添加它。你必须添加一个新的文本框,或者根本不删除它,而是隐藏它。只是出于好奇,为什么你对一些位使用纯Javascript,对其他位使用jQuery?我混合使用Javascript和jQuery,因为老实说,我是个糟糕的程序员。我认为两者都会对我的学习有所帮助。就像@Harshittailer的答案一样,只需认真努力,使其可读性和理论效率更低。就像@Harshittailer的答案一样,只需认真努力,使其可读性和理论效率更低。或者$Results1.toggle!this.checked或$Results1.toggle!这个,检查过了