Script #2 سكربت لعرض تقرير عن جميع الوسوم المستخدمة في الصفحة

السلام عليكم

سأشرح السكربت بالتدريج:

1- جلب جميع العناصر في الصفحة

 var elements = document.querySelectorAll("*");

2-إنشاء كائن ليعمل كـMap

var koko=Array(); 

3- المرور على جميع أبناء جميع العناصر لإنشاء (عنصر في الكائن) مقابل له

for (var i = 0; i < elements.length; i ++) {
    for (j = 0; j < elements[i].childNodes.length; j ++) {
            koko[elements[i].childNodes[j].nodeName]=0; 
    } 
}

4-المرور على جميع أبناء جميع العناصر لعدّ عدد مرات ورود الـ tag الخاص بها (اسمها)

for (var i = 0; i < elements.length; i ++) {
    for (j = 0; j < elements[i].childNodes.length; j ++) {
        koko[elements[i].childNodes[j].nodeName]++; 
    } 
} 

5- المرور على عناصر الكائن جميعًا وطباعة اسم العنصر وعدد مرات تكراره

for(var x in koko)
    console.log(x + " used " + koko[x]);

العنصر الوحيد الذي لا يتم طباعته ولا المرور عليه هو HTML لأنه ليس ابنًا لأحد والله وليّ التوفيق

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

var koko=Array();

لايُنصح بهذا الأسلوب للمصفوفات في javascript

الأفضَل

var koko=[];

الأسباب بالتفصيل

شكرًا جزيلًا لك، كنت بانتظار أن يقول لي أحدهم "لا تستخدم المصفوفات كما تستخدم الكائنات"

فقد قرأت أن استخدام array["string index"]=value غير محبب ويخرج المصفوفة عن وظيفتها الأصلية بأن يكون الـ index فيها عددًا (مثلًا طول المصفوفة سيكون 0 في حال عدم استخدام index عددي مرتّب)

هل كلامي صحيح ؟

supercoder أضف ردا

نعم لاتدخل مُعرف غير رقمي في المصفوفة لايتم إعتباره عنصر ولايُخرج المصفوفة عن عملها javascript تفعل أشياء غريبة جدًا

var array = [];

// دالة في المصفوفة لتخرج جميع العناصر
array.fetch = function(callback){
    var i=0,
        array=this;
    for(;i<array.length;i++) callback.apply(array[i],[]);
}

// إدخال بعض العناضر
array.push("a");
array.push("b");
array.push("c");

// تجربة
array.fetch(function(){
    console.log(this);
});

إستخدم push هي تقوم بزيادة الlength بدلًا عنك

array.push(value);

أو بعد كل زيادة عنصر رقمي

array.length++;

.

المصفوفات في JS رائعة جدًّا، شكرًا جزيلًا لك. استفدت .