2012-06-20 18 views
15

के साथ "सामान्यीकृत" HTML तालिका पंक्तियों के उपयोग से HTML तालिका को सामान्यीकृत किया जा सकता है या नहीं, यह निर्धारित करने या गणना करने का कोई तरीका है? या यदि कोई जावास्क्रिप्ट लाइब्रेरी है जो इसे कर सकती है।पंक्तियों

जैसे, इस तालिका:

+-----------+---------+ 
| Apple  | Red  | 
| Apple  | Green | 
| Apple  | Yellow | 
| Sun  | Yellow | 
| Sun  | Hot  | 
| Charizard | Hot  | 
| Charizard | Pokémon | 
+-----------+---------+ 

इस में बदल जाएगा:

+-----------+---------+ 
| Apple  | Red  | 
|   | Green | 
|   |---------| 
|-----------| Yellow | 
| Sun  |-------- | 
|-----------| Hot  | 
|   |---------| 
| Charizard | Pokémon | 
+-----------+---------+ 

इस बेला में देखो देखने के लिए मैं क्या मतलब है: http://jsfiddle.net/scorch/LZKkQ/

इन संयोजनों में से कुछ के लिए आसान कर रहे हैं मैन्युअल रूप से पता लगाने के लिए, लेकिन कुछ काफी जटिल हो सकते हैं। मैं जितना संभव हो सके तालिका को कम करना चाहता हूं, और सुनिश्चित करें कि कोई अन्य संयोजन नहीं है जो इसे और कम कर सकता है। यानी, तालिका में अधिमानतः केवल अद्वितीय मूल्य।

संपादित करें: पहेली में अतिरिक्त कॉलम को कभी भी ध्यान न दें। लगता है कि फ़ायरफ़ॉक्स में सही-कॉलम पर पंक्तियों के साथ कुछ समस्याएं हैं, इसलिए मुझे वांछित प्रभाव रखने के लिए एक और जोड़ना पड़ा।

संपादित 2:

DataTables प्लगइन fnMultiRowspan और fnFakeRowspan नीचे उल्लेख वास्तव में वांछित परिणाम नहीं मिलता है। दोनों प्लगइन्स को पहले से काम करने के लिए सही तरीके से सॉर्ट करने के लिए टेबल की आवश्यकता होती है; fnFakeRowspan केवल एक स्तंभ पर काम करता है और fnMultiRowspan नीचे (गर्म और पीले दूसरे कॉलम में दोहराया गया है) परिणाम देता है:

+-----------+---------+ 
|   | Red  | 
| Apple  | Green | 
|   | Yellow | 
|-----------+---------| 
| Charizard | Hot  | 
|   | Pokémon | 
|-----------+---------| 
| Sun  | Yellow | 
|   | Hot  | 
+-----------+---------+ 
+4

खत्म करना चाहते हैं तो आप इसे अपने आप को लेखन की कोशिश की? –

+1

हां, एक jquery लाइब्रेरी [डेटाटेबल] (http://datatables.net) है जिसकी यह सुविधा यह थी: [विज़ुअल रूप से एक ही सामग्री के साथ पंक्ति में दो या दो से अधिक सेल समूहबद्ध करना] (http://datatables.net/प्लग-इन/एपीआई # fnFakeRowspan) –

+0

मैंने इसे करने के लिए गणितीय तरीका खोजने का प्रयास किया है, लेकिन मुझे इसके समीकरण को बनाने का कोई तरीका नहीं दिख रहा है। – Oscar

उत्तर

1

@MahmoudGamal टिप्पणी में ऊपर कहा गया है, वहाँ DataTables कहा जाता है jQuery के लिए प्लग में है कि योग्य हो सकता है। की जाँच करें fnFakeRowspan समारोह:

जब वहाँ एक ही सामग्री के साथ एक पंक्ति में दो या अधिक कोशिकाएं होती हैं एक कॉलम में रोस्पेन कोशिकाओं बनाता है, प्रभावी रूप से उन्हें एक साथ नेत्रहीन समूहीकरण। नोट - यह प्लग-इन वर्तमान में केवल सर्वर-साइड प्रसंस्करण के साथ सही ढंग से कार्य करता है।

त्वरित कोड पढ़ने के आधार पर, ऐसा लगता है कि आप एक कॉलम निर्दिष्ट करते हैं, फिर यह डुप्लिकेट की तलाश करता है, और आवश्यकतानुसार कोशिकाओं को जोड़ता है। (नोट: मैंने इस कोड को स्वयं नहीं किया है।)

+0

एचएम, यह लगभग आधा रास्ते हो जाता है। मैंने कोशिश की है, और यह केवल एक कॉलम में ऐसा करने का समर्थन करता है, एकाधिक नहीं। और तालिका को काम करने के लिए पहले से ही सही क्रम में क्रमबद्ध किया जाना चाहिए। फ़ोरम पर प्लगइन की कुछ भिन्नताएं थीं, लेकिन वास्तव में कोई भी काम नहीं करता था। वैसे भी धन्यवाद, शायद इसे देखें और देखें कि क्या मैं इसे कुछ संशोधनों के साथ करना चाहता हूं। – Oscar

+0

नहीं, यह एकाधिक कॉलम के लिए समर्थन करता है। लेकिन आपको एक बार फिर 'fnFakeRowspan()' को कॉल करना होगा। –

0

यदि आप पर्याप्त जावास्क्रिप्ट को समझते हैं तो इसे स्वयं लिखना आसान होगा। आपको बस इतना करना है कि अगली स्ट्रिंग वर्तमान स्ट्रिंग के समान है और फिर इसे दो बार प्रिंट करने के बजाय केवल एक की ऊंचाई बढ़ाने के लिए है।

संपादित करें: तो आप इसे पसंद

+-----------+---------+ 
| Apple  | Red  | 
| Pokémon | Green | 
| Sun  | Yellow | 
| Charizard | Hot  | 
+-----------+---------+ 
+0

ठीक है, यह भी पहले सॉर्ट किया जा सकता है। और न केवल 'कॉलम 1 एसी, कॉलम 2 एसी', क्योंकि यह इसे व्यवस्थित करने का सबसे अच्छा तरीका नहीं हो सकता है (जैसा उपर्युक्त उदाहरण तालिका में है), क्योंकि दूसरे कॉलम को भी पंक्तिबद्ध होने की आवश्यकता है। शुरुआती सॉर्टिंग के बाद पंक्तियों को स्थानांतरित करके एक और इष्टतम व्यवस्था की जा सकती है। – Oscar

+0

मेरा उत्तर संपादित करें –

+0

वास्तव में नहीं। प्रश्न में "इस में बदल दिया जाएगा:" तालिका की जांच करें। – Oscar

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