سؤال

أعتقد أن هذا خاص بـ IE 6.0 ولكن ...

في جافا سكريبت أقوم بإضافة أ div إلى DOM.أقوم بتعيين id يصف.عندما أحاول لاحقًا التقاط div بواسطة id كل ما أحصل عليه هو null.

أي اقتراحات؟

مثال:

var newDiv = document.createElement("DIV");
newDiv.setAttribute("ID", "obj_1000");
document.appendChild(newDiv);

alert("Added:" + newDiv.getAttribute("ID") + ":" + newDiv.id + ":" + document.getElementById("obj_1000") );

مطبوعات التنبيه "::null"

يبدو أنه يعمل بشكل جيد في Firefox 2.0+

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

المحلول

بالإضافة إلى ما تقترحه الإجابات الأخرى (أنك تحتاج إلى إدراج العنصر فعليًا في DOM حتى يتم العثور عليه عبر getElementById())، تحتاج أيضًا إلى استخدام اسم سمة بأحرف صغيرة حتى يتعرف IE6 عليه باعتباره id:

var newDiv = document.createElement("DIV"); 
newDiv.setAttribute("id", "obj_1000");
document.body.appendChild(newDiv);

alert("Added:"
   + newDiv.getAttribute("id") 
   + ":" + newDiv.id + ":" 
   + document.getElementById("obj_1000") );

...يستجيب كما هو متوقع:

Added:obj_1000:obj_1000:[object]

بحسب ال وثائق MSDN ل setAttribute(), ، حتى IE8 هناك اختياري المعلمة الثالثة الذي يتحكم في ما إذا كان حساسًا لحالة الأحرف فيما يتعلق باسم السمة أم لا.خمن ما هو الافتراضي...

نصائح أخرى

يجب إضافة div إلى عنصر حتى يصبح جزءًا من المستند.

document.appendChild(newDiv);

alert( document.getElementById("obj_1000") );

يجب عليك إضافة div إلى dom.

// Create the Div
var oDiv = document.createElement('div');
document.body.appendChild(oDiv);

newDiv.setAttribute( "ID", "obj_1000" );

يجب ان يكون

newDiv.id = "obj_1000";

حسنًا، شكرًا لوضعي على المسار الصحيح يا رفاق... كان هذا غريبًا ولكن اتضح أنه إذا قمت بتغيير الحالة إلى أحرف صغيرة، فسيبدأ كل شيء في العمل على ما يرام...

النتيجة النهائية:

var newDiv = document.createElement("DIV");
newDiv.setAttribute("id", "obj_1000");
document.appendChild(newDiv);

alert("Added:" +
      newDiv.getAttribute("id") + ":" +
      newDiv.id + ":" +
      document.getElementById("obj_1000"));

غريب...غريب جداً

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