سؤال

ولدي عنصر انتزع من 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';
    }
}

يرجى إجراء التصحيحات المناسبة لبناء الجملة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top