Node.removeChild не является объектом - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь создать функцию, которая создаст <p>, если она еще не существует!И если оно существует, функция удаляет его.

У меня есть ошибка

TypeError: Аргумент 1 Node.removeChild не является объектом.

Извините, если решение простое, но я новичок в 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 голосов
/ 01 февраля 2019

Эта функция может быть полезна:

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'));
0 голосов
/ 01 февраля 2019

removeChild принимает HTMLELement в качестве аргумента без строки 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'));


  }

}
...