PDA

View Full Version : سوال: دسترسی به همه ی تگ ها از یک نوع در جاوا اسکریپت



Salar.Shayegan
سه شنبه 13 خرداد 1393, 20:25 عصر
سلام دوستان

سوالی که اخیرا" برام پیش اومده اینه که چه جوری میشه مثلا" به همه ی تگ های لینک <a > دسترسی پیدا کرد؟

برای مثال کدی بنویسیم که روی همه ی تگ های لینک (یا غیره) تاثیر داشته باشه و نه یکی از اون ها؟

با تشکر

Javidhb
سه شنبه 13 خرداد 1393, 22:24 عصر
ابتدا با querySelectorAll تمام المنتهای مورد نظر رو توی یک آرایه ذخیره میکنید و بعد میتونید با حلقه به تک تک المنت ها دسترسی داشته باشید.
مثال:

var elements = document.querySelectorAll('a');

for (var i=0; i<elements.length; i++) {
elements[i].style.color = "red";
}


دمــو (http://jsfiddle.net/bmT6n/)

Salar.Shayegan
سه شنبه 13 خرداد 1393, 22:35 عصر
ممنونم
مثلا" من میخوام همه ی لینک ها حروف کوچک شوند
از این کد استفاده کردم اما جواب نداد:

var elements = document.querySelectorAll('a');
for (var i=0; i<elements.length; i++) {
elements[i].href = elements[i].href.toLowerCase();
}


مشکل از کجاست؟

با تشکر

hakan648
چهارشنبه 14 خرداد 1393, 14:45 عصر
باید از خصوصیت innerHTML (http://www.w3schools.com/jsref/prop_html_innerhtml.asp)برای تغییر محتوای تگ استفاده کنید.

var elements = document.getElementsByTagName('a');
for (var i=0; i<elements.length; i++) {
elements[i].innerHTML = elements[i].innerHTML.toLowerCase();
}

Test:
http://jsfiddle.net/Yjt7L/1/

در ضمن اگر هم فقط میخواهید تگ ها رو با نام اونها انتخاب کنید، از تابع getElementsByTagName (http://www.w3schools.com/jsref/met_element_getelementsbytagname.asp) که نسبت به querySelectorAll (http://caniuse.com/queryselector)سریع تر و هماهنگ تر است، استفاده کنید.

Why is getElementsByTagName() faster than querySelectorAll()? (http://www.nczonline.net/blog/2010/09/28/why-is-getelementsbytagname-faster-that-queryselectorall/)

Salar.Shayegan
چهارشنبه 14 خرداد 1393, 20:59 عصر
ممنونم

نه من میخواستم آدرس لینک ها(href) حروف کوچک شوند!
راه حل چیه؟
با تشکر

hakan648
چهارشنبه 14 خرداد 1393, 23:02 عصر
کدی که نوشتید صحیح کار میکند.

من هم کدی که نوشتم رو بروز کردم و نام دامنه هارو حروف بزرگ نوشتم، اونجا هم صحیح کار میکند.

Test
http://jsfiddle.net/Yjt7L/2/

Salar.Shayegan
چهارشنبه 14 خرداد 1393, 23:06 عصر
ممنونم

بیشتر هدفم قسمت بعد از دامنه در آدرس هست! برای مثال: categroy/3/

روی آن هم درست کار میکند؟

hakan648
پنج شنبه 15 خرداد 1393, 00:01 صبح
شما کدها رو بررسی کردید؟ من فقط برای تست نام دامنه رو با حروف بزرگ نوشتم، اما کد همه ی آدرس رو به حروف کوچک تبدیل می کند.