شروعی بر برنامه نویسی جاوا اسکریپت (JavaScript)

یکی از زبان های انعطاف پذیر و در عین حال قدرتمندی که در کنار تگ های ساده HTML و استایل CSS مورد استفاده برنامه نویسان وب قرار می گیرد، زبان برنامه نویسی جاوا اسکریپت (JavaScript) است، البته شاید تصورمان از شنیدن عنوان جاوا اسکریپت بیشتر معطوف به کدهای کاربردی وبلاگ ها و سایت ها شود، اما در واقع باید گفت قدرت این زبان برنامه نویسی خیلی بیشتر از جلوه های ظاهری است که می بینیم و احیانا به عنوان مدیر وبلاگ یا سایت با آنها سر و کار داریم، در دنیای حرفه ای بیشتر سایت ها و صفحات وب برای ایجاد انواع قابلیت های تعاملی سمت کاربر، بررسی اعتبار فرم ها، ارتباط با سرور، شناسایی قابلیت های مرورگر کاربران، کار با کوکی ها (Cookie) و مواردی از این دست از جاوا اسکریپت استفاده می کنند، البته با همه این تفاسیر به دلیل سمت کاربر (Client-side) بودن این زبان (یعنی جاوا اسکریپت تنها روی مرورگر کاربران قابل اجراست و برای تفسیر آن از مفسر مرورگر استفاده می شود نه سرور سایت)، در عین قدرتمندی محدودیت هایی نیز وجود خواهد داشت که جزء ویژگی های ذاتی هر زبان برنامه نویسی محسوب می شود.
اهمیت آموزش جاوا اسکریپت (JavaScript)
همان طور که اشاره شد فراگیری جاوا اسکریپت (JavaScript) جهت تکمیل روند آموزش مهارتهای برنامه نویسی وب گام سوم محسوب می شود، یعنی پس از آشنایی و تسلط بر HTML و CSS، نیاز به یک زبان اسکریپت نویسی تعاملی داریم تا بتوانیم با قدرت بیشتری صفحات وب خود را ایجاد نمائیم، این زبان در وب عموما جاوا اسکریپت است که البته کاربرد آن منحصر به وب نیست و گستره وسیعی دارد، منظور از اسکریپتی بودن این است که کدهای جاوا اسکریپت صرفا در موتور مرورگر تفسیر (Interprete) شده و توسط ماشین کامپایل (Compile) نمی شود، با توجه به اهمیت درک ساختار و نحوه عملکرد جاوا اسکریپت و گستره وسیع استفاده از آن عموما به علاقمندان برنامه نویسی توصیه می شود این زبان را در کنار سایر زبان های تخصصی مورد نظرشان بیاموزند تا در نوشتن و فهم الگوریتم های پیچیده و مبتنی بر رویداد ورزیده شوند (در این مرحله درک عمیق اصطلاحاتی که مطرح می شوند مد نظر نیست، صرف اینکه به صورت اجمالی با این مفاهیم آشنا باشیم و در روند یادگیری قرار بگیریم مطلوب خواهد بود).
دانش و برنامه های مورد نیاز برای یادگیری جاوا اسکریپت
برای فراگیری جاوا اسکریپت لازم است که ابتدا با HTML و CSS آشنا باشیم، به طور خاص در وب داشتن تسلط و دانش کافی در این دو زبان به نوعی پیش نیاز محسوب می شود، کدنویسی را نیز می توانیم در برنامه های ویرایشگر متنی مختلف انجام دهیم، از برنامه ساده Notepad ویندوز تا برنامه های قدرتمند مانند phpStorm، Dreamwaever، NetBeans و... همگی می توانند مورد استفاده قرار گیرند، در حال حاضر توصیه ما استفاده از برنامه قوی phpStorm است، در نهایت کدهای نوشته شده باید در صفحات HTML استفاده و با فراخوانی در مرورگر اجرا شوند.
نکات کلی که باید در رابطه با جاوا اسکریپت بدانیم
قبل از پرداختن به ادامه بحث نکات کلی را یادآور می شویم که در کار با دستورات جاوا اسکریپت لازم است آنها را بدانیم، اهمیت به خاطر داشتن این نکات در این است که حتی یک ایراد کوچک کدنویسی نیز می تواند موجب از کار افتادن کل برنامه شود، این موارد را به جهت پراکنده بودن در مبحثی جداگانه مطرح نکرده و در همین قسمت به صورت موردی مرور می کنیم:
- مفسر جاوا اسکریپت حساس به حروف بزرگ و کوچک است، یعنی به فرض عبارت var با Var از نظر مفسر این زبان متفاوت هستند.
- برای قرار دادن متن توضیحات یا راهنمای بین کدها از شیوه
/*متن راهنما*/
یا //متن راهنما
استفاده می کنیم، این متن در هنگام اجرای کدها هیچ تاثیر خاصی ندارد اما برای درج توضیحات و یا راهنمایی در خصوص شیوه کدنویسی استفاده می شود، مثال:<script type="text/javascript">
//متن توضیحات
var test = 1;
alert(test);
</script>
- کدهای جاوا اسکریپت بین تگ head یا body قابل درج و اجرا هستند، علاوه بر این به صورت فایل خارجی نیز می توانیم آنها را در صفحه وارد کنیم، در حالت حرفه ای توصیه می شود جهت خواناتر شدن کدنویسی عموما از شیوه فایل خارجی استفاده کنیم، همچنین درج کدها و فایل های جاوا اسکریپتی در قسمت های انتهایی تگ body به جهت رعایت اصول بهینه سازی و افزایش سرعت بارگذاری ترجیح دارد.- جاوا اسکریپت زبانی سمت کاربر (Client-side) است یعنی تنها در مرورگر کاربران قابل پردازش و اجرا می باشد، این عبارت در مقابل زبان های سمت سرور (Server-side) استفاده می شود که برای اجرا نیاز به یک سرور آنلاین یا لوکال دارند (مانند زبان برنامه نویسی PHP).
- نوع داده در جاوا اسکریپت می تواند به سه صورت عددی (Int) به فرض 1، رشته ای (String) به فرض book یا بولین (Boolean) یعنی به صورت true یا false باشد، همچنین در صورتی که یک منبع تعریف شده اما مقداری نداشته باشد به صورت undefined و در صورتی که مقدار آن به هر دلیل خالی باشد به صورت null در نظر گرفته می شود، مثال:
<script type="text/javascript">
var test;
alert(test);
</script>
با اجرای کد بالا مقدار undefined در پنجره مرورگر نمایش داده خواهد شد چرا که متغیر فرضی test تعریف شده اما مقداری به آن اختصاص داده نشده است، بر همین اساس نمونه کد زیر مقدار null را نمایش خواهد داد:<script type="text/javascript">
var test = null;
alert(test);
</script>
همان طور که مشخص است متغیر test با مقدار null تعریف شده است.چند مثال از کاربرد جاوا اسکریپت در صفحات وب
برای کسب آشنایی اولیه و شروع عملی آموزش ها بد نیست چند مثال ساده از قابلیت های اسکریپت نویسی این زبان در صفحات وب را با هم بررسی کنیم، در زیر کدی را جهت نمایش پیام هشدار در پنجره مرورگر درج کرده ایم که به کمک متد alert و آبجکت window به محض پردازش صفحه در مرورگر نمایش داده می شود.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | ایجاد یک هشدار در جاوا اسکریپت</title>
<!-- Webgoo.ir -->
<style type="text/css">
body{
font-family:Tahoma, Geneva, sans-serif;
text-align:justify;
font-size:12px;
direction:rtl;
}
</style>
<script type="text/javascript">
//نمایش یک پیام
window.alert("سلام! این یک پیام جاوا اسکریپت است");
</script>
</head>
<body>
<noscript>
جاوا اسکریپت در مرورگر شما غیر فعال است!
</noscript>
<hr>
کدهای جاوا اسکریپت بین تگ script نوشته می شوند.
</body>
</html>
پیش نمایشهمانطور که می بینیم شیوه نوشتاری (Syntax) این زبان به طور کلی به صورت زیر است:
object.method(argument1, argument2);
آبجکت ها در جاوا اسکریپت می توانند به طور مثال document یا window و متد نیز به فرض write، alert باشند، در صورت عدم آشنایی قبلی با این مفاهیم (آبجکت، متد) جای نگرانی نیست، همین که بدانیم چگونه از نمونه کدها مطابق با نیازمان پیروی کنیم، کافی خواهد بود، دستورات جاوا اسکریپت بین تگ های script نوشته و صفت type با مقدار text/javascript برای این تگ استفاده می شود، البته استفاده از این صفت در HTML نسخه 5 دلخواه است و حذف آن مشکلی به وجود نمی آورد اما در حال حاضر بهتر است این صفت را حذف نکنیم! از تگ noscript نیز برای نمایش پیام هشدار به کاربر در صورت فعال نبودن جاوا اسکریپت در مرورگر استفاده می کنیم، اگرچه در اغلب مرورگرها جاوا اسکریپت جزء ملزومات اولیه بوده و به صورت پیش فرض فعال است اما ممکن است به دلایلی خواسته یا ناخواسته این امکان غیرفعال باشد، در این صورت با نمایش پیام هشدار کاربر را نسبت به این موضوع آگاه می کنیم.مثالی دیگر با جاوا اسکریپت
همانطور که گفتیم، کدهای جاوا اسکریپت توسط مفسر مرورگر اجرا یا به عبارت صحیحتر تفسیر (Interprete) می شوند، لذا ویژگی هایی مانند تاریخ یا زمان، مبتنی بر تاریخ و زمان مرورگر و در واقع تاریخ و زمان سیستم عامل خواهند بود، مثالی برای ایجاد یک متن همراه تاریخ (در جاوا اسکریپت نیز مانند CSS می توان دستورات را به شکل یک فایل خارجی در صفحه وارد کرد، کدهای این مثال نیز از یک فایل خارجی در صفحه ایمپورت شده اند):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | ایجاد یک پاراگراف در جاوا اسکریپت</title>
<!-- Webgoo.ir -->
<script type="text/javascript" src="docwrite.js"></script>
<style type="text/css">
body{
font-family:Tahoma, Geneva, sans-serif;
text-align:justify;
font-size:12px;
direction:rtl;
}
</style>
</head>
<body>
<noscript>
جاوا اسکریپت در مرورگر شما غیر فعال است!
</noscript>
<hr>
کدهای این صفحه به صورت یک فایل خارجی ایمپورت شده است.
</body>
</html>
کد ایمپورت شده در صفحه:document.write("کد جاوا اسکریپت، ایجاد یک پاراگراف و نمایش تاریخ:<br>");
document.write("<p>" + Date() + "</p>");
پیش نمایشهمان طور که اشاره شد، کدهای جاوا اسکریپت را می توان به صورت فایل خارجی نیز در صفحه ایمپورت کرد که در مثال بالا در قسمت src به صورت آدرس دهی نسبی مشخص است، برای کاهش حجم کلی صفحات وب و افزایش سرعت بارگذاری بهینه تر این است که دستورات جاوا اسکریپت را تا حد امکان در یک یا چند فایل تجمیع کرده و بین تگ head قرار دهیم، البته در مواردی نیز ممکن است مجبور باشیم کدها را در انتهای صفحه یا در بخش دیگری درج کنیم، به طور مثال اگر فایل از سروری خارجی (دامنه ای به غیر از سایت اصلی) در صفحه بارگذاری شود، اختلال در بارگذاری آن فایل (به این دلیل که اغلب مرورگرها تا هنگام بارگذاری کامل فایل های js از پردازش ادامه صفحه خودداری می کنند) می تواند موجب تاخیر در بارگذاری کل صفحه شود و ممکن است مجبور باشیم اینگونه فایل ها را در انتهای صفحه قرار دهیم.
نکته: عبارت Date به کار رفته در کد بالا یک تابع درونی جاوا اسکریپت است (یعنی این تابع و ویژگی های آن از قبل در مفسر تعریف شده است)، از تابع Date برای موارد مربوط به تاریخ و زمان استفاده می شود (در آموزش های بعدی به صورت اختصاصی در این رابطه بیشتر خواهیم گفت).
در مطالب پیش رو گام به گام با مفاهیم، دستورات و قابلیت های این زبان آشنا خواهیم شد تا در نهایت به تسلط کافی برای نوشتن اسکریپت ها و برنامه های مورد نیازمان دست پیدا کنیم.

متدهای کار با آرایه در جاوا اسکریپت (JavaScript)
عملگرها (Operators) در جاوا اسکریپت (JavaScript)
توابع (Functions) در جاوا اسکریپت (JavaScript)
کار با پنجره Pop-up در جاوا اسکریپت (JavaScript)
حلقه for و while در جاوا اسکریپت (JavaScript)


میخوام اگه براتون ممکنه من رو در جاوا اسکریپت بسنجی که بدونم چیا بلدم الان خیلی چیزا یاد گرفتم ، تقریبا میشه گفت تمام جاوا اسکریپت رو ریز به ریز یه مرور کردم ولی هنوز نمیدونم آیا از پس کار واقعی بر میام یا نه ، در واقع هنوز نمیدونم کار واقعی از من چی میخواد؟
میخوام اگه براتون ممکنه یه پروژه فرضی ازم بخواید که برا خودم انجام بدم یعنی بصورت یه آزمون ، مثلا بهم بگی یه سایت طراحی کن با خصوصیات فلان و فلان یا حتی توی آزمونتون css هم باشه خیلی بهتره
در واقع قصدم اینه که بفهمم در وب با جاوا اسکریپت چه کارایی باید کرد
یه سری چیزاشو میدونم ولی میخوام اطلاعاتم کامل شه خیلی ممنون میشم این لطف رو در حقم کنی زمانشم مهم نیست یه هفته ده روز بعد باشه ، هر وقت که وقتتون آزاد بود
خیلی ممنون استاد گرامی ، موفق باشی
- فیلدهای فرم را از لحاظ مختلف (خالی نبودن، درست بودن آدرس ایمیل، کاراکترهای مجاز نام کاربری و...) بررسی کنید، اگر خطا داشت فیلد مورد نظر در معرض دید کاربر قرار گیرد (اسکرول به فیلد یا فوکوس).
- رنگ پس زمینه یک بلاک را پس از کلیک کاربر بر روی دکمه به صورت انیمیشن (فریم به فریم در ده گام) از یک مقدار هگز به مقدار دیگر تغییر دهید.
- در فواصل زمانی مشخص (به فرض ۱۵ ثانیه) درخواست ای جکس به یک فایل JSON ارسال و خروجی دریافتی را تجزیه و چاپ کنید (مبحث تجزیه فایل JSON و آرایه).
- از میان لیست سلکت آدرس های مختلف تصاویر را با جاوا اسکریپت بارگذاری و نمایش دهید (رویداد onchange).
- تاریخ و زمان سیستم را به صورت زنده و ثانیه به ثانیه به روز و نمایش دهید.
- باکس انتخاب تاریخ (سال، ماه و روز) طراحی کنید (زمانبر است!).
- یک WYSIWYG ابتدایی طراحی کنید (صرفا جهت آشنایی).
- یک باکس منوی آبشاری اینتراکتیو طراحی کنید (به صورت Toggle).
انجام چند نمونه از این موارد می تواند برای تست مناسب باشد اگر همه را بخواهید بنویسید خیلی زمانبر است و ممکن است فعلا در پروژه های عملی کاربردی هم نباشد.
location.reload();
را فراخوانی و صفحه را رفرش کند.اما اگر منظور از ادیتور همان محیط کدنویسی برنامه ها است احتمالا صرفا باید با پلاگین مرتبط با آن برنامه یا مرورگر امکانپذیر باشد که باید ببینید اصلا چنین پلاگینی وجود دارد یا خیر!
اموزشتون عالی
فقط یه مشکل دارم
من هرکدوم از (css,html,js) به طور فایل جدا ذخیره کردم الان دقیقا تو js باید چی بنویسم که به دو تای دیگه متصل بشه
ممنون اگه پاسخ بدین.
اگر منظور وارد کردن فایل js درون صفحه HTML است، کافی است ترجیحا در قسمت تگ head از تگ script به صورت نمونه زیر استفاده کنید:
<script type="text/javascript" src="http://yoursite.com/path/to/file.js"></script>
در قسمت src باید آدرس مطلق یا نسبی محل قرارگیری فایل js را وارد کنید.یه سوالی از جاوا اسکریپت داشتم
این عملگرهای تو جاوا اسکریپت چرا دو عدد رو جمع نمیکنن یا ضرب نمیکنند مثلا من گفتم یه عدد از اینپوت بگیر و با دو ضرب کن ولی مقداری که از اینپوت میگیره استرینگ هستش چطوری اونو تبدیل به اینتجر کنم
مثلا
document.getElementsByTagName("input")[0].value = document.getElementsByTagName("input")[0].value * 2;
مقدار 2 اینتجر هستش و خود اینپات استرینگ چطور اونو به اینتجر تبدیل کنم و ضرب کند؟جوابو اینگونه نمایش میده مثلا داخل اینپوت بنویسیم 15 و ضرب در 2 که نوشتم باید بشه 30 ولی اون 152 نشون میده دو عدد و کنار هم میگذاره
document.getElementsByTagName("input")[0].value = parseInt(document.getElementsByTagName("input")[0].value) * 2;
ممنون از راهنماییتون وقتی که کد بالا را قرار دادید این کار را انجام دادم ولی به نتیجه دلخواه نرسیدم اما با آزمون و خطا ، سرانجام به این نتیجه رسیدم که اگر همان تگ
<br />
را بردارم مشکلم حل میشه و نوشته ها کنار عکس ها قرار می گیرند . اما این کار را بعد از خدا حاصل زحمات شما استاد گرامی می دانم که بنده متوجه شدم چه جور میشه این کار رو انجام دادخدا به شما خیر بده که کار مردم را راه می اندازید
یا علی مدد
عذر می خوام که وقتتون رو می گیرم این کد کامل صفحه است
http://www.webkaran.com/javascript_codes.html
(اسکریپت گالری تصاویر با قابلیت صفحه بندی)ممنونم
باید یک استایل به صفحه خود اضافه کنید، مانند:
#photogallery-1 td, #photogallery-1 td img{
position:relative
}
#photogallery-1 td img{
z-index:-1
max-width:100%;
}
#photogallery-1 td div{
position:absolute;
bottom:0;
background:rgba(0,0,0,0.5);
color:#fff;
width:auto;
margin-left:40px;
}
سپس فایل photogallery.js را ویرایش کرده و در خط 43 کد را به صورت زیر تغییر دهید:imageHTML+='<br /><div>'+imgparts[1]+'</div>';
با این کار نوشته داخل یک بلاک div داخل تگ td چاپ می شود که با توجه به استایل CSS اختصاص داده شده، بر روی تصاویر قابل نمایش است، البته قاعدتا تنظیم این موارد مطابق با نیاز و سلیقه، زمانبر است که باید با توجه به راهنمایی خودتان برای رفع ایرادات احتمالی اقدام کنید.من محمد هستم
قبلا کدها رو براتون ارسال کرده بودم
می خواستم داخل این کدها تیبل قرار بدم (به خاطر اینکه می خواستم عکس ها کنار نوشته ها باشند نه زیرشان) که فرمودید نمیشه حالا می خوام بدونم ، بدون تیبل میشه نوشته ها به جای اینکه زیر عکس ها باشند کنارشان باشند
کد:
حذف شد
(البته کدها را قبلا به ایمیلتان فرستاده بودم)ممنون
یاعلی
عذر می خوام باز هم مزاحم شدم ببینید در کد بالا من مشکلم این هست که نوشته ها (sample) زیر عکس ها میاد ولی بنده می خوام نوشته ها کنار عکس باشند
لطفا راهنمایی کنید
باز هم ممنون
خدا خیرتون بده ممنون کارم راه افتاد ولی یک سوال در همین مورد دارم.
بنده قبلا این کار رو به این صورت انجام داده بودم ولی درست نمی شد
Textarea:<br>
<textarea rows="3" id="txtarea" onClick="SelectAll('txtarea');" style="width:200px" >This text you can select all by
clicking here </textarea>
Textarea:<br>
<textarea rows="3" id="txtarea1" onClick="SelectAll('txtarea');" style="width:200px" >This text you can select all by
clicking here </textarea>
پس برای اختصاص آیدی ، حتما باید از کاراکتر آندرلاین (_) استفاده کنیم؟onClick="SelectAll('txtarea');"
وقت بخیر و ممنون از شما و سایت خوبتون
یه سوال دارم در این کد به محض کلیک بر روی باکس ، کل نوشته ها ، هایلایت میشه من می خوام 3 عدد باکس کنار هم قرار بدم ولی قبول نمیکنه و فقط باکس بالایی هایلایت میشه
لطفا راهنمایی کنید ممنون
<script type="text/javascript">
function SelectAll(id){
document.getElementById(id).focus();
document.getElementById(id).select();
}
</script>
Textarea:<br>
<textarea rows="3" id="txtarea_1" onClick="SelectAll(this.id);" style="width:200px" >This text you can select all by clicking here </textarea>
<br>
Textarea:<br>
<textarea rows="3" id="txtarea_2" onClick="SelectAll(this.id);" style="width:200px" >This text you can select all by clicking here </textarea>
<br>
Textarea:<br>
<textarea rows="3" id="txtarea_3" onClick="SelectAll(this.id);" style="width:200px" >This text you can select all by clicking here </textarea>
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.