استخدام getElementById لعناصر التي ليست [بعد] في DOM؟

StackOverflow https://stackoverflow.com/questions/1077139

  •  21-08-2019
  •  | 
  •  

سؤال

وبقدر ما أعرف document.getElementById ( 'myId') سوف ننظر فقط لعناصر HTML التي هي بالفعل في الوثيقة. دعنا نقول لقد خلق عنصر جديد عبر JS، ولكني لم إلحاق حتى الآن إلى نص المستند، هو هناك طريقة يمكنني الوصول إلى هذا العنصر من خلال المعرف الخاص به مثل أود أن تفعل عادة مع getElementById؟

var newElement = document.createElement('div');
newElement.id = 'myId';
// Without doing: document.body.appendChild(newElement);
var elmt = document.getElementById('myId'); // won't work

هل هناك حل بديل لذلك؟ (يجب أن أقول أنني لا أريد لتخزين أي إشارة إلى هذا العنصر معين، وهذا هو السبب في أنني بحاجة إلى الوصول إليه عن طريق المعرف الخاص به)

وشكرا لك!

هل كانت مفيدة؟

المحلول

وإذا لم يكن جزءا من الوثيقة، ثم لا يمكنك الاستيلاء عليها باستخدام document.getElementById. getElementById يقوم بحث DOM، وبالتالي فإن عنصر يجب أن تكون في شجرة التي يمكن العثور عليها. إذا قمت بإنشاء عنصر DOM عائم، كان موجودا فقط في الذاكرة، وليس الوصول إليها من DOM. لا بد من إضافتها إلى DOM لتكون واضحة.

إذا كنت تحتاج إلى الرجوع إلى العنصر في وقت لاحق، وذلك ببساطة تمرير الإشارة إلى وظيفة أخرى - يتم تمرير كافة الكائنات في جافا سكريبت بالرجوع، والعمل هلم جرا هذا العنصر DOM عائم من داخل يعدل وظيفة أخرى الأصلي، وليس نسخة <. / P>

نصائح أخرى

وgetElementById هو أسلوب على كائن المستند. انها لن يعود أي شيء لا في الوثيقة.

في عدم تخزين المرجعية، هاه؟ إذا كنت قد سحب سحرية للخروج من الهواء عن طريق الهوية، ثم الهواء سيكون إشارة إلى ذلك.

إذا كنت قد خلقها، مجرد تمرير الكائن إلى وظائف أخرى والوصول إليه مباشرة؟

function createDiv()
{
  var newElement = document.createElement('div');
  doWorkWithDiv(newElement);
}

function doWorkWithDiv(element)
{
  element.className = 'newElementCSS';
  element.innerHTML = 'Text inside newElement';
  addToDoc(element);
}

function addToDoc(element)
{
  document.body.appendChild(element);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top