1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

آموزش Java Script - بخش دوم

شروع موضوع توسط hector2141 ‏10/9/12 در انجمن JS

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    [​IMG]
    در درس قبل شما با تگهای موجود در سطرهای 1 ، 2 ، 3 ، 5 ، 7 و 8 آشنا شدید .
    در سطر 6 از یك تگ HTML به نام IMG استفاده شده كه وظیفه این تگ نمایش تصاویر و عكس ها در صفحات وب است .
    در سطر 6 ، src یكی از خصوصیات مهم و معروف تگ Img است كه آدرس فایل عكس را مشخص می كند .
    و اما ONMOUSEOVER . این همان خصوصیتی است كه شما آن را در سطر 6 و در داخل تگ IMG می بینید . این عبارت همان كنترل كننده ماست كه وظیفه كنترل كردن ماوس در هنگام قرار گیری برروی شئ مورد نظر را دارد .
    عبارت Onmouseover در لاتین به این معناست ، «زمانی كه ماوس روی آن قرار گرفت » .
    بعد از علامت = و در داخل "" عكس العمل یا همان دستوریست كه ما می خواهیم در صورت قرار گرفتن ماوس انجام گیرد . در اینجا از دستور Alert استفاده شده كه صفحه ای برای كاربر باز كرده و متن داخل پرانتز را نشان می دهد .


    در صورت قرار گرفتن ماوس روی عكس ، كاربر صفحه زیر را مشاهده خواهد كرد .
    حال عبارت onmouseover ، یكی از خصوصیات (Properties ) این شی محسوب می شود .
    توجه داشته باشید كه تحلیل كد ها در این زبان برنامه نویسی بسیار مهم است . مطمئن باشید كه اگر بتوانید كد ها را به خوبی برای خودتان تحلیل كنید در برنامه نویسی موفق خواهید بود .

    روش سوم برای استفاده JS در صفحات وب ، بیشتر مورد توجه حرفه ای ها و مورد استفاده در پروژه های بزرگ است . در این روش شما برنامه های JS خود را در صفحه وب نمی نویسید بلكه آن را در یك فایل جداگانه و با پسوند js. می نویسید . تنها كاری كه شما باید برای استفاده این فایل JS بكنید این است كه آن را در صفحه وب مسیر دهی كنید .
    تگ Link راه حل شماست !!! این تگ به شما كمك می كند كه فایل JS خود را مسیر دهی نمایید .
    شكل كلی استفاده از این تگ به صورت زیر است .
    دلیل اینكه این روش در پروژه های بزرگ استفاده می شود را در مثال زیر بررسی می كنیم .
    فرض كنید شما باید سایتی طراحی كنید كه شامل 150 صفحه است و وظیفه دارید یك برنامه JS كه 10 كیلو بایت حجم دارد را در هر یك از این 150 صفحه بكار ببرید . با یك حساب سر انگشتی می فهمید كه با افزودن این برنامه 10 كیلو بایت به صفحات ، 1500 كیلو بایت یعنی یك و نیم مگابایت به حجم سایت شما افزوده می شود و این یك فاجعه است !!!!!!
    در عوض شما می توانید به جای استفاده كل برنامه در هر یك از صفحات ، با استفاده از تگ یك خطی Link ، در تمام این 150 صفحه فقط فایل JS كه تنها 10 كیلو بایت حجم دارد را مسیر دهی كنید ؛ و این یعنی یك بهره وری خوب در حجم.همیشه به یاد داشته باشید بهره وری حجمی در صفحات وب و طراحی سایت وب بسیار بسیار مهم است .
    در بخش بعد كنترل كننده های وقایع در JS و عملگرهای JS را برای شما تشریح می كنیم ..
    متغییرها و عملگرهای JS
    در ابتدا به مفهوم «متغییر» می پردازیم . در توضیحی بسیار ساده باید بگویم ، متغییر مانند یك جعبه می باشد كه بر اساس نوعش می تواند اشیاء و مقادیر مختلفی را در خود جای دهد .
    طبیعی است كه هر یك از این جعبه ها باید برای خودش اسم خاص و منحصر به فردی داشته باشد تا از دیگر جعبه ها مجزا شده و قابل تمییز دادن باشد . متغییر ها نیز دقیقا حكم این جعبه ها را دارند ، مقادیر خاصی را می پذیرند و با نام خاصی از بقیه جدا می شوند .
    و اما انواع متغییر ؛ یكی از معمول ترین و معروفترین نوع متغییر ها ، متغییر های عددی (numeric variables) هستند كه می توانند اعداد مختلف را بدون محدودیت رقمی در خود جای دهند . از این متغییر ها می توان برای اعداد اعشاری و منفی نیز استفاده كرد . برای مثال وقتی ما می خواهیم عدد 348/3242 را به متغییری به نام mark نسبت دهیم باید به این صورت ، عمل مقدار دهی را انجام دهیم :
    mark=3242.348
    نوع دیگری از متغییر ها در JS متغییر های رشته ای (string variables) هستند كه می توانند یك متن یا عبارت را در خود جای دهند به عنوان مثال اگر بخواهیم عبارت world wide web را به متغییر www نسبت دهیم به این صورت عمل می كنیم :
    www="world wide web"
    توجه داشته باشید كه باید در آغاز و پایان عبارت علامت " (quotation mark) را قرار بدهیم .

    دانستن این نكته بسیار مهم است كه هیچگاه دو متغییر mark=3242.348 و "3242.348"=mark با هم برابر نیستند زیرا اولی یك متغییر عددی و دومی یك متغییر رشته ای است !!! پس هیچگاه از علامت "" برای متغییر های عددی استفاده نكنید .
    نكته مهم دیگر این است كه نباید در قسمت نام متغییر از علامت فاصله (space) استفاده كنید به عنوان مثال متغییر w w w هرگز برای Java Script قابل قبول نیست و یك خطای برنامه نویسی محسوب می شود .
    متغییر منطقی (Boolean variables) نوعی از متغییر است كه نسبت به بقیه انواع متغییر ها محدود تر است ، بدین معنی كه فقط دو مقدار TRUE (درست) و False (نادرست) را می پذیرد . از متغییر بولین (منطقی) اكثرا در نوشتن شرط ها در JS استفاده می شود .
    و اما متغییر شئ (Object Variables) كه از انواع مهم متغییر هاست . این نوع از متغییر در اكثر برنامه های JS كاربرد دارد و در ان یك شئ یا اتفاق مربوط به آن شئ ذخیره می شود . مثلا وقتی می خواهیم شئ به اسم Core را در داخل متغییریبه نام Attribute جای دهیم بدین صورت عمل می كنیم :
    Attribute=core

    در پایان بحث مربوط به متغییر ها بهتر از به نكات بسیار مهم زیر توجه كنید :
    زبان JS در تعریف نام متغییر ها به حروف بزرگ و كوچك حساس است یعنی هیچگاه متغییرهای Www ، WWW و www با هم برابر نیستند و JS هر یك را متغییری جداگانه می داند .
    هیچگاه نام یك متغییر با عدد شروع نمی شود . در ضمن استفاده از نقطه (.) و علامت هایی چون @ و $ و % در نام متغییر جایز نیست . پس متغییر هایی چون 12fm و se.r و rt@r برای زبان JS بی معنی هستند .
    برای نام یك متغییر نمی توان از كلمات رزرو شده JS مانند this ، comment ، case و بسیاری دیگر استفاده كرد . تعداد كلمات رزرو شده در JS زیاد است و من به مرور زمان به همه آنها اشاره خواهم كرد .
    وقتی ما متغییری مانند "mark="world wide web را تعریف می كنیم در واقع مقدار world wide web را به متغییر mark نسبت می دهیم و تصور اینكه بر اساس این دستور world wide web با mark برابر است ، تصوری كاملا نادرست است .
    برای هر كسی كه اندكی اطلاعات پیش زمینه برنامه نویسی دارد واضح است كه هر زبانی كه عملگرهای ریاضی چون جمع ، تفریق و غیره را نداشته باشد ، یك زبان ناقص بوده و فاقد یكی از اساسی ترین خصوصیات یك زبان برنامه نویسی است .
    زبان JS دارای یكی از كاملترین علائم و دستورات ریاضی است كه از نقاط قوت این زبان به شمار می رود . توجه داشته باشید كه ما می توانیم توسط این عملگر ها بین دو یا چند متغییر یك یا چند عمل ریاضی را انجام داده و حاصل را به یك متغییر دیگر نسبت دهیم .
    ساده ترین عملگر این زبان ، عملگر جمع است كه دارای نكات مهمی است . فرض كنیم دو متغییر به نام های m1=5 و m2=7 داشته باشیم كه هر دو متغییر عددی باشند . در این صورت می توانیم اندو را با استفاده از دستور زیر با هم چمع كرده و داخل متغییر d قرار دهیم :
    d=m1+m2

    در این حالت متغییر d دارای مقدار عددی 12 خواهد بود . نكته قابل توجه این است كه از جمع دو متغییر عددی ، متغییری عددی به وجود می آید .
    حال فرض كنید دو متغییر m1 و m2 ی ما دارای مقدار رشته ای day و night باشند . در این صورت در مورد حاصل جمع آنها داریم :
    d=m1+m2
    در حالت جمع دو مقدار رشته ای ، مقدار حاصل برابر است با مقادیر دو متغییر در كنار هم ، یعنی مقدار dبرابر خواهد بود با daynight ، و همانطور كه مشاهده می كنید هیچ فاصله ای بین دو مقدار نخواهد بود. حتما به این نكته بسیار مهم توجه داشته باشید كه هیچگاه m1+m2 با m2+m1 برابر نیست زیرا همیشه در جمع رشته ای مقدار متغییر دوم بعد از مقدار متغییر اول قرار خواهد گرفت یعنی
    r=m1+m2 پس : r=daynight
    t=m2+m1 پس : t=nightday
    ممكن است شما بخواهید یك متغییر عددی را با یك متغییر رشته ای جمع كنید . در این صورت یك مقدار رشته ای از جمع دو متغییر بدست خواهد آمد . مثال زیر مطلب آشكار تری در اختیار شما قرار می دهد .
    P="javascript"
    t=239
    f1=p+t پس : f1="javascript239"
    f2=t+p پس : f2="239javascript"
    نكته قابل توجه دیگر این است كه در جمع دو متغییر منطقی ، مقدار TRUE برابر با 1 (یك) و مقدار FALSE برابر با 0 (صفر) محسوب خواهد شد .در واقع False را می توان دارای مقدار پوچ و True را می توان دارای مقدار كامل یعنی 1 در نظر گرفت . اگر هر دو متغییر True باشند حاصل جمع انها برابر 2 خواهد بود ، در صورت FALSE بودن هر دو حاصل برابر صفر و در صورتی كه یكی True و دیگری False باشد حاصل برابر 1 خواهد بود .
    چون در این كلاس كاملترین مطالب و كوچكترین نكات در مورد مباحث مختلف JS ارائه می شود ، اتمام هر مبحث در یك جلسه امكان پذیر نیست پس ادامه بحث در مورد عملگر ها را به بخش بعد موكول می كنیم ...

    متغییرها و عملگرهای JS قسمت دوم
    دو متغییر عددی a=12 و b=7 را در نظر می گیریم . ما می توانیم عمل تفریق بین دو متغییر a و b را به دو صورت a-b و b-a انجام دهیم كه حاصل این دو با هم برابر نیست !
    a-b=12-7=5
    b-a=7-12=-5
    بر خلاف جمع دو متغییر رشته ای ، تفریق دو متغییر رشته ای امكان پذیر نیست و در صورت تفریق ، در هر حالت ، حاصل برابر با رشته NaN به معنی Not a Number خواهد بود . این خصوصیت شامل تفریق یك متغییر رشته ای از عددی و بالعكس می باشد . با یك مثال بحث را روشنتر می كنیم .

    فرض كنید دو متغییر رشته ای "www"a= و "net"b= را تعریف كرده ایم ، در هر دو صورت تفریق a-b و b-a حاصل برابر NaN خواهد بود .
    a="www"
    b="net"
    d=a-b
    f=b-a
    در نتیجه : d=f=NaN
    و در صورت داشتن یك متغییر رشته ای و یك متغییر عددی :
    a=12
    b="net"
    d=a-b
    f=b-a
    در نتیجه : d=f=NaN
    پس به این نتیجه كلی می رسیم كه هر گاه یك متغییر رشته ای _ در هر حالت _ در عمل تفریق وجود داشته باشد حاصل عبارت رشته ای NaN خواهد بود .
    در تفریق متغییر های «منطقی» به مانند جمع متغییر های رشته ای ، True مفهوم 1(یك) و False مفهوم 0 (صفر) خواهد داشت . به مثال زیر توجه كنید :
    a=true
    b=false
    c=a-b
    d=b-a
    در نتیجه خواهیم داشت : c=1-0=1 و همچنین : d=0-1=-1
    در این مورد نیز a-b و b-a با هم متفاوتند .
    حال عملگر ضرب را بررسی می كنیم . برای انجام عمل ضرب از * استفاده می كنیم . در این حالت می توان به ضرب دو عدد (چه صحیح و چه اعشاری) اشاره نمود كه به صورت زیر تعریف می شود .
    c=a*b
    بدین معنی كه متغییر a در b ضرب شود و حاصل به متغییر c نسبت داده شود . در مثال زیر به این مطلب اشاره شده است .
    a=12
    b=3
    c=a*b
    d=b*a
    در نتیجه داریم : c=d=36
    مشاهده كردید كه در ضرب تعویض جای اعداد تاثیری در جواب ضرب نمی گذارد یعنی a*b=b*a .
    در صورت ضرب دو متغییر رشته ای یا یك متغییر رشته ای در یك متغییر عددی حاصل رشته NaN خواهد بود .پس نمیتوان متغییر رشته ای را در هیچ نوع متغییر دیگر ضرب نمود .
    حال به ضرب متغییر های منطقی می رسیم . همانطور كه گفته شد ، true مفهوم یك و False مفهوم صفر دارد . در ضرب متغییر های رشته ای سه حالت پیش می آید :
    در صورت ضرب دو متغییر منطقی True ، حاصل 1 خواهد بود .
    ضرب دو متغییر منطقی false نیز حاصل صفر خواهد داشت .
    در ضرب یك متغییر منطقی True در یك متغییر False ، جواب صفر بدست خواهد آمد .
    پس به این نتیجه می رسیم كه در ضرب متغییر های منطقی فقط دو جواب 0و1 خواهید داشت و فقط در صورتی جواب برابر 1 خواهد بود كه هیچ متغییر False ی در ضرب شركت نداشته باشد.و اما عملگر تقسیم . عملگری كه می توان با استفاده از آن در JS عمل تقسیم را انجام داد « / » است . اولین موردی كه از این عملگر بررسی می كنیم ، حالت تقسیم دو متغییر عددی است .
    فرض كنید ما دو متغییر با نام های number1 و number2 با مقادیر عددی 24 و 8 داشته باشیم.حال می توانیم عمل تقسیم بین این دو متغییر را به دو صورت number1/number2 و number2/number1 انجام دهیم كه در حالت اول نتیجه عدد 3 و در حالت دوم عدد 0.3333333333333333 خواهد بود .

    نكته 1 : زبان JS در حالت اعشاری فقط تا 16 رقم اعشاری محاسبه می كند .

    نكته 2 : در عمل تقسیم هر عددی بر عدد صفر ، حاصل برابر با رشته Infinity به معنی بینهایت خواهد بود .

    در تقسیم یك متغییر رشته ای به یك متغییر عددی و بلعكس حاصل برابر با NaN خواهد بود . در تقسیم متغییر های منطقی ، حالت های زیر به وجود می آید .
    در تقسیم یك متغییر منطقی True بر True حاصل برابر با 1 خواهد بود.
    در تقسیم یك متغییر منطقی True بر False حاصل برابر با رشته Infinityخواهد بود
    در تقسیم یك متغییر منطقی False بر True حاصل برابر با صفر خواهد بود
    در تقسیم یك متغییر منطقی False بر False حاصل برابر با رشته Infinity خواهد بود
    بخش مهم و اصلی عملگر ها در JS به پایان رسید ، تعدادی از عملگر های دیگر را در زمان نیاز شرح خواهم داد . در پایان سوالی را كه تعداد فراوانی از دوستان پرسیده بودند به همراه پاسخی كه داده ام در اینجا قرار می دهم .