Posts Tagged ‘regular expression’
حذف کامنت ها
فروردین ۱۲م, ۱۳۸۸
برای حذف کامنت های جاوا اسکریپ این رو استفاده کردم. اگه میخواین بدونین واسه چی، واسه کم شدن حجم فایلjs
درواقع این رو در بخش Regular Expression در قسمت Replace برنامه Notepad++ استفاده کردم
دقت داشته باشین که g در آخر پارامتر اول تمام اتفاقات از این regExp رو برمیگردونه.
اگه نباشه فقط اولین عبارتی که پیدا میشه با پارامتر دوم replace شده و تموم!
str.replace(/(<!--(.*)-->)|(\/\*(.*)\*\/)|(\/\/(.*))/g,'');
Tags: javascript, regular expression, remove comments, جاوا اسکریپ, حذف کامنت ها
Posted in javascript | Comments (۲)
getElementsByClassName
بهمن ۲۷م, ۱۳۸۷
تاحالا شده بخواهید یکی از elementهای DOM رو از طریق نام کلاس آن انتخاب کنید؟! البته این کار درصورتی که از یکی از کتابخانه های جاوا اسکریپت مثل jQuery استفاده میکنید خیلی راحت خواهد بود.
اما باید بدونید که در فایرفاکس هم ( که من پیشنهادش میکنم! ) یک تابعی تعریف شده که عینا” همین کار رو انجام میده.
( document.getElementsByClassName(”targetClass”) ) و بعد از فراخوانی آرایه ای از element هایی رو که دارای کلاس targetClass برمیگردونه!
اما طبق معمول برای ie و همچنین opera هنوز این تابع وچود ندارد که در زیر آنرا بطور دستی اضافه میکنیم:
document.getElementsByClassName = function(class_name) {
var docList = this.all || this.getElementsByTagName('*');
var matchArray = new Array();
var re = new RegExp("(?:^|\\s)"+class_name+"(?:\\s|$)");
for (var i=0, n=docList.length; i<n; i++) {
if (re.test(docList[i].className) ) {
matchArray.push(docList[i]);
}
}
return matchArray;
}
متغیر doList شامل تمام elementهای داخل DOM هست. درصورتی که all برای Document تعریف شده باشد (در فایرفاکس تعریف نشده است) all و در غیر اینصورت توسط تابع getElementsByTagName انتخاب شده و در docList قرار میگیرد.
حالا یک سوال پیش میاد و اون اینکه چرا all اول نوشته شده با اینکه تابع getElementsByTagName در هر سه مرورگر شناخته شده است؟! جواب اینه که در موارد خاصی تعداد element های select شده در این دو مورد فرق داره و البته که all کامل تره.(در Opera)
درباره عبارت منظم استفاده شده هم این رو بگم که قسمت اول یعنی (?:^|\\s)
از اول رشته ی نام کلاس یا از اولین کلمه بعد از فاصله رو تست میکنه و قسمت دوم هم تا فاصله یا تا آخر رشته رو تست میکنه.
در ضمن استفاده از ?: در این عبارت ها هم ضرورتی نداره اما باعث میشه که سرعت تست کردن این عبارات بالا بره (به عبارات منظمی که شامل “?:” باشه “Non-capturing groups” گفته میشه چون وقت صرف ساختن backreferenceها نمیشه)
فکر نکنم نکته خاص دیگه ای داشته باشه!
فعلا”
Tags: Damn ie, ff, firefox, getElementsByClassName, internet explorer, javascript, js, opera, regular expression, اینترنت اکسپلورر, جاوا اسکریپت, عبارات منظم, فایرفاکس
Posted in Damn ie, Mozilla FireFox, javascript | Comments (۰)