PDA

View Full Version : ارتباط یک دیو با دیو متناظر



ASedJavad
شنبه 02 اردیبهشت 1391, 19:24 عصر
سلام دو تا دیو همنام داریم مثلا به نام xx که هر کدوم دو تا دیو درونی دارن که باز آیدیهاشون به طور متناظر برابره. مثلا a1 و a2
(یعنی ما تو هر کدوم از دیوهای xx یه دیو با آی دی a1 داریم و یک دیو با آی دی a2 )


حالا میخوام از طریق جاوا اسکریپت تو هر کدوم از این xx ها با دستور document.getElementById("a1").textContent متن دیو a1 رو بگیرم و این متن رو با دستوری مثل document.getElementById('a2').innerHTML بریزم توی دیو a2 متناظرش




مثلا شما کد زیر رو فرض کنید:

<div class="xx">

<div id="a1">salam</div>
<div id="a2"></div>
</div>
<div class="xx">
<div id="a1">aleyk</div>
<div id="a2"></div>
</div>



میخوام متن درون دیو a2 بالایی (خط سوم کد) بشه salam و متن درون a2 پایینی (خط هفتم) بشه aleyk


چکار باید بکنم


(نمیدونم تونستم منظورم رو برسونم یا نه!)

iker-casillas
شنبه 02 اردیبهشت 1391, 19:57 عصر
سلام

در درجه اول باید بگم که id در کل کد به صورت منحصر به فرد است و نمی توان در یک صفحه دو شی با id برابر داشت.
بعد اینکه:
textContent توی ie (لعنه الله علیه) پشتیبانی نمیشه و شما کلا باید از innerHTML استفاده کنید.
برای اینکه این کار انجام بشه شما دستوراتت به ترتیب اینا میشه:

var a = document.getElementById('a1').innerHTML;
document.getElementById('a2').innerHTML = a;


شرایط نام گذاری که شما در اینجا استفاده کردید وضعیت رو بی دلیل برای خودت پیچیده کرده.
اما برای شرایط اینجا فکر کنم این کار کنه:

var a = document.getElementsByTagName('div');

for(var i=0;i<a.length;i++){
if(a.className == 'xx'){
var b = a[i].childNodes;
var temp = '';
for(var j = 0; j < b.length; j++){
if(b.tagName){
if(temp != ''){
b.innerHTML = temp;
}else{
if(b.tagName.toLowerCase() == 'div'){
temp = b.innerHTML;
}
}
}
}
}
}

ASedJavad
شنبه 02 اردیبهشت 1391, 21:12 عصر
آقا ممنون از جوابت
ان‏شاءالله تا آخر عمرت زنده باشی:چشمک:


id در کل کد به صورت منحصر به فرد است و نمی توان در یک صفحه دو شی با id برابر داشت.


اگه تکراری باشه چه مشکلی پیش میاد؟
الان این کدی که من نوشتم ظاهرا بدون هیچ مشکلی اجرا میشه!


textContent توی ie (لعنه الله علیه) پشتیبانی نمیشه و شما کلا باید از innerHTML استفاده کنید.ممنون از تذکرتون
برام سوال پیش اومده بود چرا کدی که نوشتم تو IE هیچ عکس العمل خاصی رو بر نمی انگیزونه.


شرایط نام گذاری که شما در اینجا استفاده کردید وضعیت رو بی دلیل برای خودت پیچیده کرده.اونجا مجبورم از اسامی تکراری استفاده کنم.
حالا فرض کنیم a1 و a2 بجای اینکه IdName دیو ها باشن، className اون ها باشن و دیو هامون دیگه آی دی نداشته باشن
باز هم وضعیت به همین منواله
یا راه بهتری داره؟


اما برای شرایط اینجا فکر کنم این کار کنه:


ممنون
یه دو سه تا [i] و [j] کم داشت که با گذاشتنشون به خوبی جواب داد
خیر از جوونیت ببینی!

iker-casillas
شنبه 02 اردیبهشت 1391, 23:16 عصر
id یعنی شناسه یعنی شناسه تگ، تگ ها هم مثل ما آدمن و حقّ داشتن اسم منحصر به فرد رو دارن:چشمک:

اشکالی که به وجود میاد اینه که وقتی بخوای با js بگیریش فقط اولی رو میگیره

تو اینجور شرایط بهترین کار اینه که شما id هایی که داری به هر دو قسمت وابسته باشن مثل این:


<div class="xx">
<div id="a1o1">salam</div>
<div id="a1o2"></div>
</div>
<div class="xx">
<div id="a2o1">aleyk</div>
<div id="a2o2"></div>
</div>


تا شما بتونید با دو تا for به تگهای مورد نظرت برسی