2012-06-26 31 views
24

की निम्न त्रुटि गूगल क्रोम के डेवलपर्स उपकरण में फेंक दिया जा रहा है:Uncaught TypeError: पढ़ा नहीं जा सकता संपत्ति 'className' अपरिभाषित

Uncaught TypeError: Cannot read property 'className' of undefined

कोड वाले त्रुटि फेंक दिया जा रहा है:

var oTable = $('#resultstable').dataTable({ 
          "bAutoWidth" : true, 
          "iDisplayLength" : 10, 
          "bFilter" : false, 
          "bLengthChange" : false 
         }); 

<table cellpadding="0" cellspacing="0" border="0" id="resultstable" 
        name="resultstable" class="display datatable"> 

अजीब बात एक है जो:

resultstable html में एक मेज की आईडी है टेबल टैग को फेंक दें यदि कोई कथन है। तालिका पूरी तरह ठीक हो जाती है और जब प्रोग्राम if{} सेक्शन में भेजा जाता है तो सीएसएस सही तरीके से दिखाई देता है, लेकिन यह उपर्युक्त त्रुटि को फेंकता है और if{} अनुभाग में कोई सीएसएस लागू नहीं होता है।

कृपया मदद करें!

+2

कृपया, यदि आप उल्लेख करते हैं तो 'else if' के साथ पूरा कोड शामिल करें। – Kaii

+0

इसका बहुत कोड है क्योंकि डेटाटेबल हैं और चीजें पारित हो रही हैं और बदली गई हैं। वहां मौजूद बहुत सारे कोड वास्तव में सर्वर पेज पर होना चाहिए, लेकिन मुझे अभी तक इसे स्थानांतरित करने का मौका मिला है, लेकिन टी और टीडी सीएसएस सेट करने वाले सभी वर्ग दोनों और यदि दोनों में समान हैं –

+0

क्या आप इसे [jsfiddle] (http://jsfiddle.net/) या [github gists] (http://gist.github.com) पर डाल सकते हैं ताकि लोग इसे देख सकें? – bokonic

उत्तर

2

मुझे अब आपके पास एक समान त्रुटि मिली है। मुझे एक बार चुना गया लाइब्रेरी का उपयोग करके एक बहुत ही समान त्रुटि का सामना करना पड़ा। समस्या थी (चुने गए मामले में) कि [] वर्णों के साथ आईडी का उपयोग किया जा रहा था, इस प्रकार सीएसएस चयनकर्ताओं और आईडी के बीच जावास्क्रिप्ट को भ्रमित कर रहा था (याद रखें कि सीएसएस में हम गुणों को निर्दिष्ट करने के लिए [] का उपयोग कर सकते हैं)।

डेटाटेबल्स के मामले में, मैंने देखा कि डेटाटेबल्स स्क्रिप्ट स्वयं class = " "tbody के भीतर प्रत्येक ट्र तत्व में पहले तत्व से पहले ही तैयार कर रही थी।

इसका कारण यह था क्योंकि PHP से HTML आउटपुट में तार्किक त्रुटि थी। दोषयुक्त कोड:

<?php 
for ($currentRow = 0 ; $currentRow <= $query_length; $currentRow++) { 
     ?> 
     <tr> 
     <?php 
     list($job_id, $company_id, $job_title, $industry_id, $profession_int, $job_openings, $job_city, $job_salary_start, $job_end_date, $job_start_date, $job_skills, $company_name, $isConfidential, $job_experience_level) = dbRow($query_results, $currentRow); 
     echo "<td class = \"detailed-job-row\">" . $job_title . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $company_name . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $industry_id . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $profession_int . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $job_openings . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $job_city . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $job_salary_start . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $job_end_date . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $job_start_date . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $job_skills . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $job_experience_level . "</td>"; 
     ?> 
     </tr> 
     <?php 
    } ?> 
    </tbody> 
    </table> 
<?php 
} 
?> 

वहाँ उन्हें लम्बे तालिका के निचले भाग में कोई त्रुटि दर्शाता है कि postgres 208. पंक्ति यह मुझे बताया मैं i - 1, या $currentRow - 1 पर पाशन को रोकने के लिए की जरूरत है कूद नहीं कर सकता था।

इसलिए निश्चित, काम कर कोड:

<?php 
for ($currentRow = 0 ; $currentRow <= $query_length - 1; $currentRow++) { 
     ?> 
     <tr> 
     <?php 
     list($job_id, $company_id, $job_title, $industry_id, $profession_int, $job_openings, $job_city, $job_salary_start, $job_end_date, $job_start_date, $job_skills, $company_name, $isConfidential, $job_experience_level) = dbRow($query_results, $currentRow); 
     echo "<td class = \"detailed-job-row\">" . $job_title . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $company_name . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $industry_id . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $profession_int . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $job_openings . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $job_city . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $job_salary_start . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $job_end_date . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $job_start_date . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $job_skills . "</td>"; 
     echo "<td class = \"detailed-job-row\">" . $job_experience_level . "</td>"; 
     ?> 
     </tr> 
     <?php 
    } ?> 
    </tbody> 
    </table> 
<?php 
} 
?> 

इस परिवर्तन DataTables ठीक से प्रदर्शन करने के लिए अनुमति दी प्रदर्शन।

इसलिए हालांकि मैं एक समाधान समाधान प्रदान नहीं कर सकता, मैं आपको अपने एचटीएमएल मार्क-अप को देखने की सलाह देता हूं, क्योंकि यह आपकी समस्या का स्रोत हो सकता है (उदा। क्या आपकी तालिका में tbody है?)।

+0

+1 एचटीएमएल मार्क-अप देखने के लिए। मुझे एक ही त्रुटि थी क्योंकि एक फ़ोरैच लूप के बाहर था (और इस प्रकार केवल अंतिम पंक्ति संपत्ति बंद थी) – Flion

49

अन्य उत्तर ने मुझे सही रास्ते पर रखा।

अधिक संक्षेप में, त्रुटि यह थी कि जिस तालिका को मैं बना रहा था वह गलत था।

मेरे हैडर कॉलम (पाठ्यक्रम के एक thead अंदर), मेरे पंक्ति कॉलम (tbody अंदर)

मेरी स्थिति में साथ मेल नहीं खाती, मैं शीर्ष लेख के अंदर बहुत अधिक स्तंभ था।

8

डेटाटेबल्स की आवश्यकता है कि आपकी HTML तालिका सही है। मैंने पाया कि मुझे यह त्रुटि मिली है जब मेरे पास <th> और <td> की बराबर राशि नहीं थी। सुनिश्चित करें कि आपके पास अतिरिक्त हेडर नहीं है।

+0

G8 .. उत्तर .. thanxx बहुत प्यारे !!! – social

+0

ग्रेट जस्टिन, धन्यवाद ब्रो :) –

11

एक और संभावित कारण यह है कि यदि आप तालिका में "td" तत्वों की तुलना में "aoColumnDefs" विशेषता में अधिक कॉलम सूचीबद्ध करते हैं।

var yourTable = $('#product-search-results-table').dataTable({ 
    // If you only have three columns in the HTML table, then this line will cause an error, because it lists four columns in "aoColumnDefs". 
    "aoColumnDefs": [{ "bSortable": false, "aTargets": [0, 1, 2, 3] }] 
}); 
+0

यह जगह थी! :) धन्यवाद – Veeru

1

मेरे विशिष्ट मामले में, मेरे पास मेरे तत्वों के लिए सीमाओं के बाहर सरणी सूचकांक के साथ सेट लक्ष्यीकरण गुण थे।

$('.datatable').dataTable({ 
    aoColumnDefs: [ 
    { 
     bSortable: false, 
     aTargets: [0, 6] 
    } 
    ], 
    aaSorting: [] 
}); 

यह सेट है कि वहाँ थे 7 टीडी कॉलम है, लेकिन वहाँ थे केवल 6. यह सही निम्नलिखित करने के लिए इसे बदलने:

$('.datatable').dataTable({ 
    aoColumnDefs: [ 
    { 
     bSortable: false, 
     aTargets: [0, 5] 
    } 
    ], 
    aaSorting: [] 
}); 
0

यह क्योंकि जब डोम पहली बार लोड इससे पहले कि आप उपयोग कर रहे थे इस त्रुटि फेंक रहा है घोषणा करते हैं।

आप जोड़ सकते हैं अगर हालत विशेष तत्व की तरह नीचे

if(document.getElementsByTagName('button') !== undefined){ 
    // and write your needed code here 
} 
0

समान समस्या आई अपरिभाषित नहीं है:

इस त्रुटि के लिए

मैं एक समाधान के नीचे लिखा था। रूट केस यह था कि डेटाटेबल टेबल पर नियंत्रण रखने वाला था, लेकिन हमारे कोड ने टेबल के गुणों को एक ही समय में हेरफेर करने की कोशिश की। त्रुटि संदेश ऐसा नहीं कहता है, हालांकि, तालिका को पूरी तरह से डेटाटेबल द्वारा प्रबंधित करने के लिए छोड़ दिया गया था, समस्या समाप्त हो गई थी।

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