حذف گره ها (DOM Remove Nodes)
اینجا با «حذف گره های DOM» کار داریم. «DOM» نمای درختی سند است. «گره (Node)» هر جزء درخت است. برای حذف، معمولاً از متدهای removeChild و removeAttribute استفاده می کنیم.
حذف عنصر با removeChild()
متد «removeChild» یک گره مشخص را از والد حذف می کند. با حذف یک گره، همه فرزندانش هم حذف می شوند.
var y = xmlDoc.getElementsByTagName("book")[0];
xmlDoc.documentElement.removeChild(y);
حذف گره جاری با parentNode.removeChild()
گاهی خود گره را داریم. در این حالت از parentNode برای حذف همان گره استفاده می کنیم.
var x = xmlDoc.getElementsByTagName("book")[0];
x.parentNode.removeChild(x);
حذف گره متن (Text Node)
«گره متن (Text Node)» محتوای متنی عنصر را نگه می دارد. می توان همان گره متن را حذف کرد.
var x = xmlDoc.getElementsByTagName("title")[0];
var y = x.childNodes[0];
x.removeChild(y);
خالی کردن متن با nodeValue
برای پاک کردن متن، راحت تر است مقدار «nodeValue» را خالی کنیم.
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue = "";
حذف ویژگی با removeAttribute()
«ویژگی (Attribute)» هم یک گره است. متد «removeAttribute» ویژگی را با نامش حذف می کند.
var x = xmlDoc.getElementsByTagName("book");
x[0].removeAttribute("category");
حذف گره های ویژگی با removeAttributeNode()
با «removeAttributeNode» می توان شیءِ گره ویژگی را حذف کرد. این کد همه ویژگی ها را پاک می کند.
var x = xmlDoc.getElementsByTagName("book");
for (var i = 0; i < x.length; i++) {
while (x[i].attributes.length > 0) {
var attnode = x[i].attributes[0];
var old_att = x[i].removeAttributeNode(attnode);
}
}
گام های عملی
- گره هدف را پیدا کن.
- اگر والد را داری، removeChild را صدا بزن.
- اگر گره را داری، از parentNode.removeChild استفاده کن.
- برای ویژگی ها از removeAttribute یا removeAttributeNode استفاده کن.
نکته: بعضی مرورگرها فاصله های خالی را «گره متن» می بینند. هنگام کار با firstChild یا siblings، مراقب گره های خالی باش.
ادامه مسیر را اینجا ببین: تغییر گره ها (DOM Change Nodes) و بعدی را اینجا: جایگزینی گره ها (DOM Replace Nodes). همچنین برای مرور درخت می توانی به پیمایش (DOM Traversing) سر بزنی.
جمع بندی سریع
- removeChild گره و فرزندانش را حذف می کند.
- parentNode.removeChild برای حذف گره جاری است.
- nodeValue را خالی کن تا متن پاک شود.
- removeAttribute ویژگی را با نام حذف می کند.