سؤال

ما هو أفضل سهل جافا سكريبت طريق إدخال X صفوف في جدول في IE.

ووأتش تي أم أل الجدول يبدو مثل هذا:

<table><tbody id='tb'><tr><td>1</td><td>2</td></tr></tbody></table>

وماذا يجب أن أفعل، هو إسقاط الهيئة القديمة، وتضاف واحدة جديدة مع 1000 الصفوف. لدي 1000 الصفوف كما متغير سلسلة جافا سكريبت.

والمشكلة هي أن الجدول في IE لا يوجد لديه وظيفة HTML داخلي. لقد رأيت الكثير من الخارقة للقيام بذلك، ولكن أريد أن أرى أفضل واحد الخاص بك.

ملحوظة: استخدام مسج أو أي إطار آخر لا يعني شيئا.

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

المحلول

وهنا مقال كبيرة من قبل الرجل الذي نفذ innerHTML= IE على كيف حصل IE للقيام tbody.innerHTML="<tr>..." :

<اقتباس فقرة>   

في البداية، وأعتقد أن IE لم يكن   قادرة على أداء إعادة رسم ل   الجداول المعدلة مع HTML داخلي، ولكن   ثم تذكرت أنني كنت   المسؤول عن هذا الحد!

وبالمناسبة خدعة وانه يستخدم أساسا كيف أن كل الأطر تفعل ذلك لعناصر table / tbody.

تحرير :mkoryak، تعليق يقول لي لديك الصفر الخيال ولا تستحق جوابا. ولكن أنا الدعابة لك على أي حال. النقاط الخاصة بك:

> انه لا إدخال ما أحتاج

ووا؟ وهو إدراج صفوف (أن لديه باعتبارها سلسلة أتش تي أم أل) إلى عنصر table.

> وانه يستخدم أيضا عنصر مخفي اضافية

وكانت نقطة من هذا العنصر لتوضيح أن جميع IE يحتاج هو "السياق". هل يمكن استخدام عنصر تم إنشاؤها على الطاير بدلا من ذلك (document.createElement('div')).

> وكذلك المادة قديمة

وأنا أبدا مساعدتك مرة أخرى؛)

ولكن على محمل الجد، إذا كنت تريد أن ترى كيف يمكن للآخرين وتنفيذه، نلقي نظرة على مصدر مسج ل <لأ href = "http://dev.jquery.com/browser/trunk/jquery/src/core. شبيبة # L890 "يختلط =" نوفولو noreferrer "> jQuery.clean() أو نموذج في <لأ href =" http://www.prototypejs.org/assets/2008/1/25/prototype-1.6.0.2.js " يختلط = "نوفولو noreferrer"> Element._insertionTranslations .

نصائح أخرى

وعامل الناس كما مسج يفعل ذلك، على سبيل المثال. إضافة <table> و</table> حوله، تضاف إلى وثيقة ونقل العقد الذي تريد حيث تريد لهم والتخلص من الحرارة عنصر.

وانتهى رمز الأمر هذا:

    if($.support.scriptEval){
    //browser needs to support evaluating scripts as they are inserted into document
        var temp  = document.createElement('div');
    temp.innerHTML = "<table><tbody id='"+bodyId +"'>"+html;
    var tb = $body[0];
    tb.parentNode.replaceChild(temp.firstChild.firstChild, tb);
    temp = null;
    $body= $("#" + bodyId);
    } else {
    //this way manually evaluates each inserted script
        $body.html(html);
    }

والأشياء التي البيض في الوجود مسبقا: جدول يحتوي على الجسم مع معرف 'bodyId. $ الجسم هو متغير عمومي (أو وظيفة لديها إغلاق على ذلك)، وهناك قليلا من مسج في ذلك أيضا، لأن IE لا evalute البرامج النصية التي يتم إدراجها في أتش تي أم أل على الطاير.

وكان لي نفس المشكلة (كما يفعل الكثير من الناس الآخرين)، وبعد الكثير من اللعب هنا هو ما حصلت عليه للعمل.

وعليك ان تجعل آر عبر document.createelement ( 'آر') ثم جعل الدفتيريا، وبنفس الطريقة. appendchild والدفتيريا لآر، آر appendchild إلى TBODY (وليس الجدول) ثم يمكنك Html داخلي والدفتيريا قمت بإنشائه وأنها ستعمل. وكان هذا IE8 كنت تستخدم. في الأساس لابد من جعل بنية الجدول مع createelement لكن بقية يمكن innerHTMLed. كنت أفعل هذا يراقب في المصحح IE8 وأن أقول أنه من شأنه أن يضيف أنه (إذا فعلت tr.innerhtml = "بلاه")، وإعطاء أي خطأ، لكنه لن يعرض، وأظهر كسر جدا وجهة النظر أتش تي أم أل دوم الجدول (لا الدفتيريا وأظهر من أي وقت مضى، ولكن فعل / الدفتيريا)

وهكذا عندما فعلت أخيرا طن تبريد و TD دعوات createelement، خلقت دوم أبحث الصحيح، ووجه الصفحة بشكل صحيح.

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