2009-05-18 8 views
7

किसी तालिका में पंक्ति जोड़ने के लिए कौन सी विधि को प्राथमिकता दी जाती है?insertRow बनाम appendChild

var tr = tbl.insertRow (-1);

या

वर टीआर = document.createElement ('tr'); tbl.appendChild (tr);

?

उत्तर

5

insertRow उतना बेहतर होगा। ग्रेड ए ब्राउज़र द्वारा यह supported है और यह कम वर्बोज़ और क्लीनर एपीआई है।

+0

इसके अलावा, पंक्तियां हमेशा तालिका के बच्चे नहीं होती हैं, जो ऐपेंड चाइल्ड विधि को अधिक जटिल बनाती है। –

+0

@rex: आपका क्या मतलब है? – erikkallen

+0

तत्व के बजाय का बच्चा हो सकता है। – Rob

3

insertRow को डीओएम [1] के बाद से अधिक विश्वसनीय के रूप में तर्क दिया जा सकता है।

appendChild विधि जब बाहर डोम की ऑपरेटिंग, लेकिन जब दस्तावेज़ के भीतर तालिकाओं को संशोधित करने की कोशिश कर (एक और अधिक लगातार तेजी से (मामूली यद्यपि) सभी परीक्षण किया ब्राउज़रों (IE6/7, FF3, Chrome2, Opera9) भर में है आम प्रयास) यह काफी धीमी है।

दूसरे शब्दों में: निश्चित रूप से insertRow का उपयोग करें।


इन परीक्षणों स्थानीय स्तर पर तो प्रदर्शन किया गया विश्वसनीय नहीं हो सकता है, स्रोत यहाँ देखें: http://pastie.org/482023

0

आप डोम तरीकों का उपयोग करते हैं, एक टीआर एक tbody, ठेड, या tfoot तत्व के साथ जोड़ दिया जाना चाहिए, और एक टेबल तत्व के लिए नहीं।

3

मुझे insertRow के लिए अच्छे तर्क दिखाई देते हैं, लेकिन मुझे एक नुकसान मिलता है: insertRow केवल एक नई खाली पंक्ति बना सकता है, जबकि appendChild एक मौजूदा पंक्ति वस्तु लेता है। AppendChild के साथ, आप पंक्तियों के चारों ओर पंक्तियों को स्थानांतरित कर सकते हैं, एक पंक्ति से दूसरी पंक्ति में एक पंक्ति ले जा सकते हैं, या एक तालिका से एक पंक्ति ले सकते हैं और बाद में इसे वापस रख सकते हैं (पेजेड टेबल के लिए बहुत आसान)। InsertRow (और insertCell) के साथ ऐसा करने के लिए, आपको सामग्री को पैकेज करना होगा, नई पंक्तियां और कक्ष बनाना होगा, और फिर नई सामग्री को पुरानी सामग्री जोड़ें। बेकार, और प्रतीत होता है कम कुशल। क्या ऐसा करने के लिए एक और अधिक शानदार तरीका है? InsertRow का एक संस्करण जो मौजूदा पंक्ति ऑब्जेक्ट लेता है वह अच्छा होगा।

संबंधित मुद्दे