کار با متد getElementById و innerHTML در جاوا اسکریپت (JavaScript)

معمولا در زبان های برنامه نویسی مختلف، برخی خاصیت ها و متدها بیشتر از سایر موارد به کار می روند که می توان اصطلاح متدهای پرکاربرد را برای آنها به کار برد، در کدنویسی با جاوا اسکریپت، دو متد پرکاربرد getElementById و innerHTML جزء برجسته ترین این موارد هستند، البته عبارت متد (Method) بیشتر در برنامه نویسی شی گرا (OOP یا Object Oriented Programming) کاربرد دارد و مواردی مانند innerHTML را خاصیت (Property) می نامند، با این وجود و به جهت اینکه این موضوع (OOP) در جاوا اسکریپت چندان مصداق ندارد، به اختصار و در این آموزش به هر دو، متد خواهیم گفت، به هر صورت برای آشنایی بیشتر و جهت تکمیل دانستنی هایی که تا این لحظه آموخته ایم، با ادامه مطلب همراه ما باشید.
متد getElementById
از getElementById در جاوا اسکریپت برای تعیین یک مرجع (reference) به یک عنصر (element) با توجه به ID آن استفاده می شود، به زبان ساده یعنی انتخاب یک عنصر HTML (به فرض تگ div) با توجه به ID آن، به طور مثال اگر بخواهیم مقادیر value یک input را با توجه به ID آن استخراج کنیم، خواهیم نوشت:
<input id="test" type="text" value="1">
<script type="text/javascript">
var input = document.getElementById('test').value;
alert(input);
</script>
نکته 1: همان طور که در مثال بالا مشخص است، متد getElementById خود وابسته به شی (object) دیگری به نام document است، لذا الزاما باید به همراه آن استفاده شود.نکته 2: متد getElementById نسبت به بزرگ یا کوچک بودن مقادیر ID حساس است، به طور مثال Id با id در این متد دو مقدار متفاوت هستند.
نکته 3: در هنگام استفاده از متد getElementById دقت کنید که تگ مورد نظر پیش از فراخوانی، در دسترس قرار گرفته باشد، به عبارت دیگر ابتدا باید تگ مورد نظر توسط مرورگر (و بر اساس ساختار DOM یا نمودار درختی تگ ها از بالاترین قسمت صفحه به پائین) پردازش شود و سپس بتوان عملیاتی روی آن انجام داد، به فرض حالت زیر اشتباه است و خطای TypeError: document.getElementById(...) is null را دریافت خواهید کرد.
<script type="text/javascript">
var input = document.getElementById('test').value;
alert(input);
</script>
<input id="test" type="text" value="1">
علت خطا در مثال بالا این است که پیش از پردازش تگ input مورد نظر، آن را در دستورات جاوا اسکریپت فراخوانی کرده ایم، در صورت نیاز می توانید این مشکل را با استفاده از window.onload (این رویداد زمانی اجرا می شود که صفحه به طور کامل بارگذاری شده باشد) برطرف کنید:<script type="text/javascript">
window.onload = function(){
var input = document.getElementById('test').value;
alert(input);
}
</script>
<input id="test" type="text" value="1">
متد innerHTML
از innerHTML در جاوا اسکریپت برای دریافت یک مقدار از درون تگ های HTML یا اختصاص دادن یک مقدار به تگ ها و تغییر محتوای آنها استفاده می شود، به مثال زیر توجه کنید.
<script type="text/javascript">
function SetValue(id){
var element = document.getElementById(id);
//دریافت مقادیر از عنصر مورد نظر
var value = element.innerHTML;
alert(value);
}
</script>
<input type="button" onclick="SetValue('result');" value="کلیک کنید">
<div id="result">این یک تست است</div>
همان طور که اشاره شد، کاربرد innerHTML محدود به دریافت یک مقدار نیست و می توان برای اختصاص مقادیر به عناصر HTML از آن استفاده کرد، به مثال زیر توجه کنید.<script type="text/javascript">
function SetValue(id, value){
var element = document.getElementById(id);
//اختصاص مقدار به عنصر مورد نظر
element.innerHTML = value;
}
</script>
<input type="button" onclick="SetValue('result', 'این یک تست است');" value="کلیک کنید">
<div id="result"></div>
نکته 1: همان طور که ملاحظه می کنید innerHTML وابسته به متد و آبجکت پیش از خود (document و getElementById) است.نکته 2: استفاده از متد innerHTML برای تغییر محتوای یک عنصر والد (parent) باعث حذف تگ های فرزند (child) آن نیز می شود، به فرض اگر درون تگ div از چند تگ تو در تو استفاده شده باشد، با به کار بردن innerHTML برای تگ والد، محتوای آن هر چه باشد (شامل تگ های div تو در تو) حذف و با مقادیر جدید جایگزین می شود.
نکته 3: برای دریافت مقادیر از تگ input یا تغییر محتوای آن، باید از متد value به جای innerHTML استفاده شود.
مثال و پیش نمایش آنلاین
برای آشنایی بیشتر با کاربردهای getElementById و innerHTML در جاوا اسکریپت، چند مثال کاربردی را همراه با پیش نمایش آنلاین در زیر بررسی می کنیم.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>وبگو | کاربرد متد getElementById و innerHTML</title>
<!-- https://webgoo.ir -->
<style type="text/css">
body{
font-family:Tahoma, Geneva, sans-serif;
font-size:12px;
direction:rtl;
line-height:20px;
}
#text-box{
padding:6px;
background:#CCC;
}
#test-block{
padding:6px;
background:#CCF;
cursor:pointer;
}
</style>
</head>
<body>
<noscript>
جاوا اسکریپت در مرورگر شما غیر فعال است یا پشتیبانی نمی شود!<br>
</noscript>
<input id="test" type="text" value="یک مقدار وارد کنید">
<input type="button" value="کلیک کنید" onclick="AlertValue('test');">
<script type="text/javascript">
function AlertValue(id){
var value = document.getElementById(id).value;
alert(value);
}
</script>
<br><br>
آرگومان متد getElementById همان id عنصر HTML مورد نظر است.
<hr><br>
<div id="text-box">پس از کلیک بر روی دکمه تغییر رنگ و اجرای تابع ChangeColor، با استفاده از متد getElementById و style رنگ پس زمینه این بلاک تغییر می کند!</div><br>
<input type="button" value="تغییر رنگ" onclick="ChangeColor('text-box');">
<input type="button" value="رنگ پیش فرض" onclick="DefaultColor('text-box');">
<script type="text/javascript">
function ChangeColor(id){
var block = document.getElementById(id);
block.style.backgroundColor = "#FC0";
}
function DefaultColor(id){
var block = document.getElementById(id);
block.style.backgroundColor = "#CCC";
}
</script>
<hr><br>
<input id="text-input" type="text" onkeyup="InnerChange(this.id);"><br>
<div id="inner-text"></div>
<script type="text/javascript">
function InnerChange(id){
var element = document.getElementById(id);
var value = element.value;
document.getElementById('inner-text').innerHTML = value;
}
</script>
<br><br>
پس از تایپ عبارت در فیلد بالا، رویداد onkeyup اجرا شده و تابع InnerChange فراخوانی می شود، در این مثال از متد innerHTML استفاده کرده ایم.<br>
نکته: با استفاده از عبارت کلیدی this.id می توانید به صورت خودکار id بلاک یا تگ input مورد نظر را به کدهای خود بدهید.
<hr><br>
<div id="test-block" onclick="GetText(this.id);">این یک متن آزمایشی است!</div>
<script type="text/javascript">
function GetText(id){
var element = document.getElementById(id);
var text = element.innerHTML;
alert(text);
}
</script>
<br><br>
برای دریافت متن داخل بلاک div با استفاده از متد innerHTML، در داخل کادر رنگی بالا کلیک کنید.
</body>
</html>
پیش نمایشدسته بندی: آموزش مقدماتی » JavaScript
برچسب ها: JavaScript
« بعدی

حلقه for و while در جاوا اسکریپت (JavaScript)
شروعی بر برنامه نویسی جاوا اسکریپت (JavaScript)
کار با تاریخ و زمان در جاوا اسکریپت (JavaScript)
تعریف و استفاده از متغیر (Variable) در جاوا اسکریپت (JavaScript)
آرایه (Array) در جاوا اسکریپت (JavaScript)
دیدگاه


۱۸:۳۳ ۱۳۹۶/۰۴/۲۱
سلام
من در یکی از صفحات خاص سایتم ، روزانه لینک های مختلف از چند تا سایت های دیگه میارم که اون سایت ها 5 تا یا 6 تا هستن و لینک های مختلف از این 5 یا 6 تا سایت هستند . هر روز هم ممکنه تعداد این لینک ها کم یا زیاد بشه و آپدیت بشن . اما خود اون سایت ها همون 5 یا 6 تای قبلیه .
چطوری میشه فقط با کدهای جاوا اسکریپت ، تابعی نوشت یا اسکریپتی طراحی کرد که وقتی کاربر به اون صفحه از سایتم سر زد، به طور تصادفی و به صورت خودکار (بدون کلیک کاربر)، به یکی از اون لینک هایی که از اون 5 تا سایت هست هدایت بشه؟
من میخوام که کاربر از مثلا صفحه سایت من
من در یکی از صفحات خاص سایتم ، روزانه لینک های مختلف از چند تا سایت های دیگه میارم که اون سایت ها 5 تا یا 6 تا هستن و لینک های مختلف از این 5 یا 6 تا سایت هستند . هر روز هم ممکنه تعداد این لینک ها کم یا زیاد بشه و آپدیت بشن . اما خود اون سایت ها همون 5 یا 6 تای قبلیه .
چطوری میشه فقط با کدهای جاوا اسکریپت ، تابعی نوشت یا اسکریپتی طراحی کرد که وقتی کاربر به اون صفحه از سایتم سر زد، به طور تصادفی و به صورت خودکار (بدون کلیک کاربر)، به یکی از اون لینک هایی که از اون 5 تا سایت هست هدایت بشه؟
من میخوام که کاربر از مثلا صفحه سایت من
http://mysite.ir/specialpage
به صورت تصادفی و خودکار به یکی از لینک های زیر منتقل بشه :http://endsite.ir/link1
http://endsite.ir/link2
http://endsite.ir/link3
.
.
.
http://endsite.ir/linkn
معمولا انتقال خودکار کاربر به یک لینک به لحاظ حرفه ای توصیه نمی شود، صرفا جهت جنبه آموزشی می توانید از نمونه کد زیر استفاده نمائید:
<script type="text/javascript">
var urls = ['http://test_1.com', 'http://test_2.com', 'http://test_3.com'];
var rand = Math.floor(Math.random() * 3);
var href = urls[rand];
setTimeout(function (){
window.location.href = href;
}, 0);
</script>
neda
۱۱:۲۵ ۱۳۹۶/۰۳/۳۱
<script>
document.getElementById('del_btn').onclick = function(){
result = window.confirm('آیا میخواهید حذف کنید؟');
if(!result){
return false;
}
}
</script>
سلام من این کد و وارد کرد که وقتی بر روی دکمه حذف کلیک میشه اول سوال کنه بعد حذف کنه. اما وقتی روی دکمه خیر کلیک میکنم عملیات حذف بازم اجرا میشهکد شما ویرایش و اصلاح شد!
مینا
۰۲:۱۶ ۱۳۹۵/۰۷/۱۷
سلام. میخواستم بدونم از چه راهی میشه استفاده کرد که مقادیر یک تابع بعد از اجرا شدن به حالت اول برگردن مثلا دو کلید داریم با فشردن اولی و دیدن محتواش وقتی کلید دوم را زدیم مقادیر کلید اول نمایش داده نشن و فقط محتوای کلید دو نمایش داده بشه.
سوالتان خیلی واضح نیست! اگر به طور مثال خروجی در یک بلاک div باشد، با استفاده از متد innerHTML (اگر از =+ استفاده نشود)، مقادیر جدید جایگزین مقادیر فعلی می شود! اگر هم نتایج در چند بلاک نمایش داده می شوند، می توان قبل از تنظیم خروجی یک بلاک، ابتدا مقادیر بلاک یا بلاک های دیگر را برابر خالی قرار داد، البته در حالت کدنویسی حرفه ای برای این موارد معمولا از توابع و حلقه ها با هم استفاده می شود.
هادی
۱۹:۵۵ ۱۳۹۵/۰۶/۳۱
با سلام
ضمن تشکر از زحمات شما یه سوال داشتم.
چطور میتونم یک کلاس رو بصورت یک متغییر در جاوا اسکریپت دریافت کنم.
یه چیزی شبیه این:
ضمن تشکر از زحمات شما یه سوال داشتم.
چطور میتونم یک کلاس رو بصورت یک متغییر در جاوا اسکریپت دریافت کنم.
یه چیزی شبیه این:
if($(".right_block").style.display == "none")
{
alert("none");
}
با تشکربرای این مورد باید از متد getElementsByClassName استفاده کنید، مثال:
var your_class = document.getElementsByClassName("your_class_name");
در این حالت از آنجایی که ممکن است چندین عنصر یک کلاس مشترک داشته باشند، نتیجه به صورت یک آرایه برگردانده می شود، لذا برای خروجی گرفتن باید به صورت نمونه زیر از متغیر استفاده کنید:alert(your_class[0]);
یا به فرض:alert(your_class[0].style.display);
پوریا
۱۱:۳۶ ۱۳۹۵/۰۴/۳۱
سلام و خسته نباشید خدمت دوستان.
من میخوام یک textbox داخل صفحه asp وبم قرار بدم که موقع تایپ کردن ارقام تاریخ خودش بصورت خودکار بعد از دو رقم روز و دو رقم ماه یک ممیز جدا کننده قرار بده.
ممنون میشم راهنماییم کنید.
من میخوام یک textbox داخل صفحه asp وبم قرار بدم که موقع تایپ کردن ارقام تاریخ خودش بصورت خودکار بعد از دو رقم روز و دو رقم ماه یک ممیز جدا کننده قرار بده.
ممنون میشم راهنماییم کنید.
کد زیر صرفا یک نمونه جهت آشنایی بیشتر است، در حالت کاربردی ممکن است نیاز به در نظر گرفتن حالت های بیشتری باشد (مانند اینکه اگر کاربر بعد از ثبت تاریخ دکمه backspace را بزند و...):
<script type="text/javascript">
function dateFormat(id) {
var elm = document.getElementById(id);
var value = elm.value;
var pattern = new RegExp(/^([\d]{4})$/);
if(value.search(pattern) != -1) {
elm.value = value.replace(pattern, "$1/");
}
pattern = new RegExp(/^([\d]{4})\/([\d]{2})$/);
if(value.search(pattern) != -1) {
elm.value = value.replace(pattern, "$1/$2/");
}
pattern = new RegExp(/^([\d]{4})\/([\d]{2})\/([\d]{2})$/);
if(value.search(pattern) != -1) {
elm.value = value.replace(pattern, "$1/$2/$3");
}
}
</script>
<input type="text" name="test" id="test" onkeyup="dateFormat(this.id)">
علی
۲۳:۵۹ ۱۳۹۵/۰۴/۰۶
خیلی ممنونم کد مشکلم رو حل کرد.
فقط دو تا سوال:
1- تگ <br> درست تره یا </br> ، و همینطور input و /input .
اگه و اسلش رو نزاریم مگه خطا انجام ندادیم و از لحاظ سئو بد نیست؟
2- اگه متن های html رو در تگ p قرار ندیم خطا انجام دادیم و مشکل سئو داره یا نه؟
3- در آخر کد جواب بالا value ی دکمه رو برابر Display Result قرار دادید. این یه اسم هست یا این که کار خاصی رو انجام میده؟یکم درموردش توضیح میدید؟
فقط دو تا سوال:
1- تگ <br> درست تره یا </br> ، و همینطور input و /input .
اگه و اسلش رو نزاریم مگه خطا انجام ندادیم و از لحاظ سئو بد نیست؟
2- اگه متن های html رو در تگ p قرار ندیم خطا انجام دادیم و مشکل سئو داره یا نه؟
3- در آخر کد جواب بالا value ی دکمه رو برابر Display Result قرار دادید. این یه اسم هست یا این که کار خاصی رو انجام میده؟یکم درموردش توضیح میدید؟
در HTML نسخه 5 بین حالت های گفته شده در شماره 1 و 2 به لحاظ استاندارد کدنویسی تفاوتی وجود ندارد (حالت بدون / ترجیح دارد)، در مورد سوال آخر، خیر، این فقط یک متن معمولی است که می تواند هر چیزی جایگزین آن باشد.
علی
۰۹:۱۵ ۱۳۹۵/۰۴/۰۶
سلام ببخشید من میخوام یه کد بنویسم که دو value را در فرم html دریافت کند و آن دو را در جاوا اسکریپت با هم جمع کرده و بدون نیاز به رفرش کردن صفحه آن دو را پس از زدن یک دکمه نشان دهد همه تلاشمو هم کردم، نشد
میتونید یک راهنمایی کامل کنید؟ اگه کدشو هم بدین که خیلی ممنون میشم.
میتونید یک راهنمایی کامل کنید؟ اگه کدشو هم بدین که خیلی ممنون میشم.
می توانید از نمونه کد زیر استفاده کنید:
<script type="text/javascript">
function add_number() {
var first_number = parseInt(document.getElementById("Text1").value);
var second_number = parseInt(document.getElementById("Text2").value);
var result = first_number + second_number;
document.getElementById("txtresult").value = result;
}
</script>
Enter First Number :
<br>
<input type="text" id="Text1" name="TextBox1">
<br>Enter Second Number :
<br>
<input type="text" id="Text2" name="TextBox2">
<br>Result :
<br>
<input type="text" id="txtresult" name="TextBox3">
<br>
<input type="button" name="clickbtn" value="Display Result" onclick="add_number()">
sama
۱۶:۴۳ ۱۳۹۵/۰۳/۱۹
سلام میخواهم با کلیک بر روی یک button محتوای input تغییر کند.. یعنی با فشردن دکمه ی "1" عدد یک در اینپوت نوشته شود... و با دو بار فشردن دکمه ی "1" عددی یک دوبار نوشته شود.. البته با این توضیح که ارزش عددی داشته باشد... یعنی عدد مورد نظر یازده باشد نه اینکه "یک یک" باشد (ارزش عددی داشته باشد)
با استفاده از متد parseInt در جاو اسکریپت انجام این کار به راحتی شدنی است، نمونه کد:
<script type="text/javascript">
function addNumber(id, num){
var value = 0;
var elm = document.getElementById(id);
value = elm.value;
elm.value = value + num;
}
function getToNumber(id, num){
var value = 0;
var elm = document.getElementById(id);
value = elm.value;
alert(parseInt(value) + num);
}
</script>
<input type="text" id="test">
<input type="button" value="click!" onclick="addNumber('test', 1);">
<input type="button" value="click!" onclick="getToNumber('test', 5);">
mahdi
۱۴:۰۴ ۱۳۹۵/۰۳/۰۸
سلام خسته نباشید
من به یک مشکل برخوردم
من با استفاده از innerHTML متن یک عنصر را میگیرم ولی موقعی که میخوام اونو نمایش بدم در خروجی undefined نمایش داده میشه.
من به یک مشکل برخوردم
من با استفاده از innerHTML متن یک عنصر را میگیرم ولی موقعی که میخوام اونو نمایش بدم در خروجی undefined نمایش داده میشه.
دریافت این خطا ممکن است علت های مختلفی داشته باشد که تنها با بررسی دقیق سورس کدها می توان گفت، به طور مثال ممکن است آی دی عنصر اشتباه باشد یا در Syntax کدها اشکالی وجود داشته باشد، همچنین ممکن است کدهای جاوا اسکریپت پیش از دسترسی به عنصر در HTML DOM اجرا شوند که در چنین مواردی باید کدها را بعد از تگ مورد نظر قرار دهید.
۰۰:۴۷ ۱۳۹۵/۰۱/۲۵
با سلام
من میخوام وقتی کاربر روی کمله کلیک فشار داد داخل دایو با آیدی سمپل اجرای کدی که داخل فانکشن نوشتم رو نشون بده
لطفا ببینید کد من چه مشکلی داره
در ضمن کدهایی که نوشتم کد های وردپرس، هرچند فکر نکنم فرقی کنه
در این قسمت
من میخوام وقتی کاربر روی کمله کلیک فشار داد داخل دایو با آیدی سمپل اجرای کدی که داخل فانکشن نوشتم رو نشون بده
لطفا ببینید کد من چه مشکلی داره
در ضمن کدهایی که نوشتم کد های وردپرس، هرچند فکر نکنم فرقی کنه
در این قسمت
<?php query_posts('cat=id&showposts=29'); ?>
اون آیدی id که گذاشتم از ورودی وارد میشه که اینجا باید اتومات بشه 5<li id="gozine1" onclick="Setgozine(5)">کلیک</li>
<div id="sample" class="boxz1"></div>
<script type="text/javascript">
//<![CDATA[
function Setgozine(id) {
var value = '<div class="boxz"><br/>
<?php query_posts('cat=id&showposts=29'); ?>
<ul>"
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile;?>
</ul>
<?php wp_reset_query(); ?>
</div>';
document.getElementById('sample').innerHTML = value;
}
</script>
لطفا راهنمایم کنیدهرچند بدون تست حقیقی و گرفتن خروجی HTML نمی توان نظر قطعی داد، اما به نظر کدهای شما در بخش JavaScript با خطای Syntax مواجه است که علت آن مقادیری است که در متغیر value چاپ می شود، این مقادیر باید مطابق با Syntax جاوا اسکریپت باشند که در اینجا بین قسمت ها شکستگی وجود دارد و این از نظر مفسر جاوا اسکریپت خطا محسوب می شود (برای نوشتن کدها در خط جدید باید از n\ یا روش نمونه زیر استفاده شود).
var value = '<br>' +
'<br>' +
'<br>';
Ali
۱۶:۱۶ ۱۳۹۵/۰۱/۲۲
من میخواهم در قسمت پستهای سایت کاری کنم تا در تگ img کد align=right به طور اتوماتیک اضافه شود. چگونه این کار را کنم.
اکنون پستها به صورت عکس وسط و متن راست چین زیر ان نمایش داده میشوند و من میخواهم به صورت عکس سمت راست و متن در همان خط و روبروی عکس نمایش داده شود.
اکنون پستها به صورت عکس وسط و متن راست چین زیر ان نمایش داده میشوند و من میخواهم به صورت عکس سمت راست و متن در همان خط و روبروی عکس نمایش داده شود.
بدون بررسی خروجی صفحه نمی توان راه حل خاصی پیشنهاد داد! جاوا اسکریپت برای این کار گزینه مناسبی نیست، در ساده ترین حالت باید تصاویر شما یک کلاس CSS داشته باشند یا اینکه درون تگ دیگری باشند که آن تگ کلاس CSS مخصوص به خود داشته باشد تا از این طریق بتوانید خاصیت های مورد نظر را به تگ مربوطه اعمال کنید، همچنین چنانچه بتوانید در هنگام چاپ خروجی، بر روی محتوا کنترل داشته باشید، می توانید پارامتر مورد نظر را پیش از چاپ در مرورگر، با استفاده از توابعی مانند preg_match و preg_replace در PHP به تگ img اضافه کنید.
خسرو
۲۱:۰۵ ۱۳۹۵/۰۱/۱۱
بسیار عالی. خیلی ممنون
شریفی
۱۸:۰۳ ۱۳۹۴/۱۱/۱۱
بسیار عالی و فوق العاده بود.
ممنونم.
ممنونم.
شریفی
۱۱:۵۸ ۱۳۹۴/۱۱/۱۱
با سلام و ممنون به خاطر سایت خوبتون.
یه سوال خدمتتون داشتم.
بنده فرمی دارم که در اون یه فیلد تکست باکس وجود داره. میخوام کاری کنم فرضا کاربرا قابلیت اینو داشته باشن که مثلا عبارت زیر رو تایپ کنن:
" سلام.
عکس کتاب
<img>
آدرس
</img>
و ادامه متن .... "
حالا میخوام دکمه ای درست کنم که تگ <img> رو به تکست باکس اضافه کنه مثلا با زدن دکمه عبارت زیر در تکست باکس به صورت خودکار تایپ بشه.
می دونم که باید با جاوا این دکمه رو بسازم اما کدشو بلد نیستم ممنون میشم راهنمایی بفرمایید.
یه سوال خدمتتون داشتم.
بنده فرمی دارم که در اون یه فیلد تکست باکس وجود داره. میخوام کاری کنم فرضا کاربرا قابلیت اینو داشته باشن که مثلا عبارت زیر رو تایپ کنن:
" سلام.
عکس کتاب
<img>
آدرس
</img>
و ادامه متن .... "
حالا میخوام دکمه ای درست کنم که تگ <img> رو به تکست باکس اضافه کنه مثلا با زدن دکمه عبارت زیر در تکست باکس به صورت خودکار تایپ بشه.
<img>آدرس عکس را وارد کنید.</img>
و کاربر آدرس عکسشو وارد کنه.می دونم که باید با جاوا این دکمه رو بسازم اما کدشو بلد نیستم ممنون میشم راهنمایی بفرمایید.
سلام
می توانید از تابع زیر استفاده کنید:
می توانید از تابع زیر استفاده کنید:
<script type="text/javascript">
function insertAtCursor(id, value) {
var txtarea = document.getElementById(id);
var scroll_pos = txtarea.scrollTop;
var str_pos = 0;
var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ? "ff" : (document.selection ? "ie" : false ));
if (br == "ie") {
txtarea.focus();
var range = document.selection.createRange();
range.moveStart ('character', -txtarea.value.length);
str_pos = range.text.length;
} else if (br == "ff") {
str_pos = txtarea.selectionStart;
}
var c_front = (txtarea.value).substring(0, str_pos);
var c_back = (txtarea.value).substring(str_pos, txtarea.value.length);
txtarea.value = c_front + value + c_back;
str_pos = str_pos + value.length;
if (br == "ie") {
txtarea.focus();
var range = document.selection.createRange();
range.moveStart ('character', -txtarea.value.length);
range.moveStart ('character', str_pos);
range.moveEnd ('character', 0);
range.select();
}
else if (br == "ff") {
txtarea.selectionStart = str_pos;
txtarea.selectionEnd = str_pos;
txtarea.focus();
}
txtarea.scrollTop = scroll_pos;
}
</script>
<input type="text" id="test">
<input type="button" value="کلیک کنید" onclick="insertAtCursor('test', '<img>http://yoursite.ir/dir/image.png</img>')">
مینا
۱۷:۴۶ ۱۳۹۴/۱۱/۰۹
با سلام
ممنون از وقتی که برای سوالات دوستان گذاشتید.
میخواهم یک فایل txt که دارای یک سری رشته عددی است را به صورت رشته در متغیری در js فراخوانی کنم لطفا با کد دستوری راهنمایی کنید
پیشاپیش ممنون از راهنماییتان
ممنون از وقتی که برای سوالات دوستان گذاشتید.
میخواهم یک فایل txt که دارای یک سری رشته عددی است را به صورت رشته در متغیری در js فراخوانی کنم لطفا با کد دستوری راهنمایی کنید
پیشاپیش ممنون از راهنماییتان
سلام
تا آنجا که اطلاع داریم امکان کار با فایل ها در جاوا اسکریپت (به دلیل جلوگیری از بروز خطرات امنیتی برای کاربران صفحات وب) به صورت مستقیم تعریف نشده و صرفا می توانید فایل هایی که در یک فرم HTML5 و از طریق Browse توسط کاربر انتخاب شده را دریافت کنید! با توجه به نکته بالا، می توانید از نمونه کد موجود در این صفحه استفاده نمائید:
تا آنجا که اطلاع داریم امکان کار با فایل ها در جاوا اسکریپت (به دلیل جلوگیری از بروز خطرات امنیتی برای کاربران صفحات وب) به صورت مستقیم تعریف نشده و صرفا می توانید فایل هایی که در یک فرم HTML5 و از طریق Browse توسط کاربر انتخاب شده را دریافت کنید! با توجه به نکته بالا، می توانید از نمونه کد موجود در این صفحه استفاده نمائید:
http://www.dotnetcurry.com/html5/1167/read-local-file-api-html5-javascript
نکته: اگر هدف شما خواندن یک فایل از سرور باشد، بهترین شیوه برای اینگونه موارد استفاده از AJAX و PHP و ترکیب آن با JavaScript است و اگر هدف، خواندن فایل از سیستم کاربر است، بهتر است از فرم های HTML استفاده و ابتدا فایل را به سرور آپلود نمائید!
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.