在下面的代码,为什么删除操作符操作符不会删除NodeList类的属性?
<form action="javascript:void(0)" method="GET" enctype="multipart/form-data">
<fieldset>
<legend>Details</legend>
Enter the name: <input id="name" name="name" type="text" size="30"
onblur="isTheValueValid(this, document.getElementById('name_help'));">
<span id="name_help"></span>
<br>
</fieldset>
</form>
<script type="text/javascript">
function deleteAllChildren(spanElementObject){
if(spanElementObject != null){
var nodeList = spanElementObject.childNodes;
[].forEach.call(nodeList,function(property){
delete property;
});
}
}
function editSpanElementText(regex, inputElementValue, spanElementObject, helpMessage){
deleteAllChildren(spanElementObject);
if(!regex.test(inputElementValue)){
spanElementObject.appendChild(document.createTextNode(helpMessage));
return false;
}else{
return true;
}
}
function isTheValueValid(inputElementObject, spanElementObject){
return editSpanElementText(
/^[\u0041-\u005A\u0061-\u007A\.\' \-]{2,15}\s?[\u0041-\u005A\u0061-\u007A\.\' \-]{0,15}\s?[\u0041-\u005A\u0061-\u007A\.\' \-]{2,15}$/,
inputElementObject.value,
spanElementObject,
'Please enter a valid name.');
}
</script>
对于第一次尝试,输入元素,错误信息上失去焦点,Please enter a valid name.
获取呈现在给予错误输入值。
对于第二次尝试,在输入元素失去焦点时,错误消息Please enter a valid name.
在给出正确的输入值时没有被移除。
调试时forEach
不会删除#text
子节点。
为什么delete
不会删除属性?
http://perfectionkills.com/understanding-delete/ – Bergi
您正在寻找https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove或者更简单的https: //developer.mozilla.org/en-US/docs/Web/API/Node/removeChild – Bergi
@Bergi现在'removeChild'不是我要找的东西。我试图理解为什么'delete'不起作用。对于这个重复的问题,我感到不舒服。我正在阅读你对'删除'的参考。这是一篇很长的文章 – overexchange