فهرست گره ها (DOM Node List)
اینجا «فهرست گره DOM» را ساده می بینیم. Node List یعنی لیست گره ها. این لیست از childNodes یا getElementsByTagName می آید. مثل لیست حضورغیاب کلاس است.
فهرست گره DOM چیست؟
خروجی childNodes یا getElementsByTagName یک شی لیست است. ترتیب دقیقاً مثل XML می ماند. دسترسی با اندیس از صفر شروع می شود.
ساخت یک NodeList از <title>
<!DOCTYPE html>
<html>
<body>
<script>
var x;
x = xmlDoc.getElementsByTagName("title");
<\/script>
</body>
</html>
گرفتن متنِ اولین عنوان
<!DOCTYPE html>
<html>
<body>
<p id="out1"></p>
<script>
var x;
var txt;
x = xmlDoc.getElementsByTagName("title");
txt = x[0].childNodes[0].nodeValue;
document.getElementById("out1").innerHTML = txt;
<\/script>
</body>
</html>
Length و به روز بودن لیست
NodeList خودش به روز می ماند. حذف یا افزودن عنصر، بلافاصله اثر دارد. length تعداد گره ها را می دهد.
گرفتن تعداد عنوان ها
<!DOCTYPE html>
<html>
<body>
<p id="count"></p>
<script>
var count;
count = xmlDoc.getElementsByTagName("title").length;
document.getElementById("count").innerHTML = count;
<\/script>
</body>
</html>
حلقه روی همه عنوان ها
<!DOCTYPE html>
<html>
<body>
<div id="out2"></div>
<script>
var x;
var xLen;
var i;
var txt;
txt = "";
x = xmlDoc.getElementsByTagName("title");
xLen = x.length;
for (i = 0; i < xLen; i++) {
txt = txt + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("out2").innerHTML = txt;
<\/script>
</body>
</html>
فهرست ویژگی ها: NamedNodeMap
attributes یک لیست از گره های ویژگی می دهد. نام آن NamedNodeMap است. شبیه NodeList است، ولی متدهایش کمی فرق دارد.
گرفتن همه ویژگی های اولین <book>
<!DOCTYPE html>
<html>
<body>
<script>
var x;
x = xmlDoc.getElementsByTagName("book")[0].attributes;
// x.length تعداد ویژگی ها را می دهد.
<\/script>
</body>
</html>
خواندن مقدار category و طول لیست
<!DOCTYPE html>
<html>
<body>
<div id="out3"></div>
<script>
var x;
var result;
x = xmlDoc.getElementsByTagName("book")[0].attributes;
result = x.getNamedItem("category").nodeValue + " " + x.length;
document.getElementById("out3").innerHTML = result;
<\/script>
</body>
</html>
نکته: متن همیشه داخل گره متن است. مقدار عنصر، nodeValue ندارد.
برای «فهرست گره DOM» این صفحه مرجع توست. همچنین «اطلاعات گره» و «پیمایش گره ها» را دنبال کن.
جمع بندی سریع
- NodeList از ترتیب XML پیروی می کند.
- اندیس از صفر شروع می شود.
- length تعداد گره ها را می دهد.
- attributes یک NamedNodeMap است.