我尝试使一个函数创建<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');
}
}
答案 0 :(得分:0)
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'));
}
}
答案 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'));