واجهت اليوم مشكلة في فعل الأشياء. حاولت إضافة صفوف متعددة من البيانات ديناميكيًا إلى جدول وحددت أولاً جدول:
123456 | <border> <thead> </head> <tbody id = fileList> </tbody> </table> |
ثم في جافا سكريبت:
12345 | لـ (var i في الإدخالات) {... var fileTable = document.getElementById ('fileList') ؛ filetable.innerhtml += '<tr> <td> 111 </td> <td> 222 </td> </tr>' ؛} |
لا توجد مشكلة في Firefox ، ولكن سيكون من المستحيل وضعها تحت IE. سألت زملائي + بحث ووجدت أن سمات InnerHTML لهذه العناصر هي للقراءة فقط ولا يمكن تشغيلها مباشرة تحت IE. ولكن لا يوجد حل. لا يزال من الممكن تشغيل TD's Innerhtml. يمكن تعديل الرمز أعلاه على هذا النحو:
123456789101112 | لـ (var i في الإدخالات) {... var fileTable = document.getElementById ('fileList') ؛ var tr = document.createElement ('tr') ؛ var td1 = document.createElement ('td') ؛ td1.innerhtml = '111' ؛ var td2 = document.createElement ('td') ؛ td2.innerhtml = '222' ؛ Tr.AppendChild (TD1) ؛ Tr.AppendChild (TD2) ؛ filetable.appendchild (tr) ؛} |
يمكنك أولاً استخدام طريقة CreateElement لـ DOM لإنشاء TR و TD ، ثم تنفيذ العمليات المقابلة على InnerHTML من TD ، وأخيراً استخدم طريقة التذييل لإضافة العناصر التي تم إنشاؤها إلى شجرة DOM. بهذه الطريقة يمكن أن تعمل بشكل طبيعي تحت IE. تجدر الإشارة إلى أنه إذا لم يكن لدى طاولتك tbody ، فإنه يفعل هذا:
1 | <معرف الجدول = fileList> </table> |
في هذا الوقت ، لا يمكنك استخدام طريقة التذييل مباشرة على الجدول ، لأن عنصر الجدول تحت IE6 لا يدعم طريقة التذييل (يبدو أن IE8 قد دعمه بالفعل).
اقترح بعض الأشخاص على الإنترنت أيضًا استخدام EnserTrow () وطرق أخرى للقيام بذلك ، ولكن هذه الطريقة لديها مشاكل مع التوافق مع متصفحات مختلفة (inserTrow (-1) مطلوبة في Firefox) ، لذلك فهي غير مفيدة.
راجع للشغل ، على الرغم من أنني قد قرأت الكثير من معلومات JS بوعي من قبل ، ما زلت أدركت الحقيقة. الآن بدأت في الانشغال وأنا هادئ في دراستي