Node.removeChild不是对象

时间:2019-02-01 09:12:22

标签: javascript removechild

我尝试使一个函数创建<p>(如果尚不存在)!如果存在,该函数将其删除。

我有一个错误

  

TypeError:Node.removeChild的参数1不是对象。

很抱歉,如果解决方案很简单,但是我是JS的新手,也许这不是进行表单验证的正确方法:/

function insertAfter(newElement, afterElement) {

  var parent = afterElement.parentNode;
  if (parent.lastChild === afterElement) { // Si le dernier élément est le même que l'élément après lequel on veut insérer, il suffit de faire appendChild()
    parent.appendChild(newElement);
  } else { // Dans le cas contraire, on fait un insertBefore() sur l'élément suivant
    parent.insertBefore(newElement, afterElement.nextSibling);

  }
}



function createMsg(textMsg, elementParent) {
  if (!document.querySelector('.error')) {
    var paraError = document.createElement('p');
    paraError.classList.add('error');
    var paraContent = document.createTextNode(textMsg);
    paraError.appendChild(paraContent);
    insertAfter(paraError, elementParent);

  } else {
    elementParent.removeChild('p');


  }
}

2 个答案:

答案 0 :(得分:0)

removeChildHTMLELement作为参数,而不是字符串p

function createMsg(textMsg, elementParent) {
  if (!document.querySelector('.error')) {
    var paraError = document.createElement('p');
    paraError.classList.add('error');
    var paraContent = document.createTextNode(textMsg);
    paraError.appendChild(paraContent);
    insertAfter(paraError, elementParent);

  } else {

    elementParent.removeChild(elementParent.querySelector('p'));


  }

}

答案 1 :(得分:0)

此功能可能会有所帮助:

function createParagraphAndIfExistRemoveIt(parent){
  var found=false;
  for(let p of parent.querySelectorAll('p')){
    found=true;
    parent.removeChild(p);
  }
  
  if(!found){
    let p=document.createElement('p');
    p.innerHTML='this is a paragraph';
    parent.appendChild(p);
  }
  
}

createParagraphAndIfExistRemoveIt(document.querySelector('body'));