إخفاء الأخوة عنصر القادم مع جافا سكريبت
-
22-08-2019 - |
سؤال
ولدي عنصر انتزع من document.getElementById('the_id')
. كيف يمكنني الحصول على شقيقتها المقبل وإخفاء ذلك؟ حاولت هذا لكنه لم ينجح:
elem.nextSibling.style.display = 'none';
وكان الخطأ الحرائق elem.nextSibling.style is undefined
.
المحلول
وانها لفايرفوكس تعتبر المسافات بين العقد عنصر أن يكون النص العقد (في حين IE لا)، وبالتالي استخدام .nextSibling
على عنصر يحصل أن عقدة النص في فايرفوكس.
وانها مفيدة في الحصول على وظيفة لاستخدامها للحصول على عقدة عنصر القادمة. شيء من هذا القبيل
/*
Credit to John Resig for this function
taken from Pro JavaScript techniques
*/
function next(elem) {
do {
elem = elem.nextSibling;
} while (elem && elem.nodeType !== 1);
return elem;
}
وبعد ذلك يمكنك القيام به
var elem = document.getElementById('the_id');
var nextElem = next(elem);
if (nextElem)
nextElem.style.display = 'none';
نصائح أخرى
ونلقي نظرة على العنصر الانتقالي API ، أن التحركات API بين العقد عنصر فقط. هذا يسمح بما يلي:
elem.nextElementSibling.style.display = 'none';
وبالتالي تجنب المشكلة الكامنة في nextSibling من المحتمل الحصول على العقد غير العنصر (على سبيل المثال TextNode عقد بيضاء)
والخطأ الحرائق elem.nextSibling.style غير محددة.
اقتباس فقرة>ولأن nextSibling يمكن أن يكون النص عقدة أو غيرها من نوع عقدة
do {
elem = elem.nextSibling;
} while(element && elem.nodeType !== 1); // 1 == Node.ELEMENT_NODE
if(elem) elem.style.display = 'none';
وحاول تنفيذ الحلقات عبر أبناء هذا العنصر باستخدام شيء مثل:
var i=0;
(foreach child in elem)
{
if (i==0)
{
document.getElementByID(child.id).style.display='none';
}
}
يرجى إجراء التصحيحات المناسبة لبناء الجملة.