ورود

View Full Version : تغییر مکان تگ ها



saeedtrb
شنبه 11 آبان 1392, 14:53 عصر
سلام دوستان فرض کنید یه همچین کدهایی داریم

<ul class="box">
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
<li>item5</li>
</ul>
خوب می خوایم این کدها رو ترتیبشونو برعکس کنیم یعنی item1 بیاد آخر و item5 بیاد اول تا یه جاهایی پیش رفتم می دونم باید این کدها رو بریزیم داخل آرایه و این آرایه رو از آخر شروع کنیم به خوندن.ولی نمی دونم چه جوری اینارو داخل صفحه چاپ کنم. کد javascript هم اینه
obj=document.getElementsByClassName("box");
if(obj.length>0){
objLI=obj[0].getElementsByTagName("li");
lengthLi=objLI.length;
obj[0].innerHTML="";
for(i=lengthLi;0<=i;i--){
obj[0].appendChild(objLI[i]);
}
}

jalil_gh
شنبه 11 آبان 1392, 17:35 عصر
وقتی شما به متدی مثل getElementsByClassName و یا getElementsByTagName و ... عناصری از صفحه رو انتخاب می‌کنید این متد یه مجموعه آرایه مانند از عناصر رو برمیگردونه. چیزی که باید به خاطر داشته باشید اینه که این مجموعه به قول معروف به صورت live هست. یعنی وقتی یکی از عناصر تو صفحه تغییر کنه و یا حذف بشه، مقادیر این مجموعه رو هم تحت تاثیر قرار میده.
شما تو کدتون تو خط ۵ لیست‌های داخل ul رو حذف کردید. وقتی شما این کار رو می‌کنید مقادیر از داخل مجموعه objLI هم حذف میشه. در نتیجه وقتی به for میرسه دیگه مقداری تو objLI وجود نداره.
در ضمن شما باید مقدار ایندکس for رو از یکی کمتر از طول مجموعه شروع کنید.
با این تفاصیر کد شما به این صورت در میاد:
obj=document.getElementsByClassName("box");
if(obj.length>0){
objLI=obj[0].getElementsByTagName("li");
lengthLi=objLI.length;
//obj[0].innerHTML="";
for(i = lengthLi - 1; 0 <= i; i--){
obj[0].appendChild(objLI[i]);
}
}