DataTables: Tanımlanmamış özellik stili okunamıyor


118

Bu hatayı aşağıdaki şekilde alıyorum:

jquery.dataTables.js:4089 Uncaught TypeError: Cannot read property 'style' of undefined(…)
_fnCalculateColumnWidths @ jquery.dataTables.js:4089
_fnInitialise @ jquery.dataTables.js:3216
(anonymous function) @ jquery.dataTables.js:6457
each @ jquery-2.0.2.min.js:4
each @ jquery-2.0.2.min.js:4
DataTable @ jquery.dataTables.js:5993
$.fn.DataTable @ jquery.dataTables.js:14595
(anonymous function) @ VM3329:1
(anonymous function) @ VM3156:180
l @ jquery-2.0.2.min.js:4
fireWith @ jquery-2.0.2.min.js:4
k @ jquery-2.0.2.min.js:6
(anonymous function) @ jquery-2.0.2.min.js:6

Yukarıdaki satır (anonim işlev) @ VM3156: 180'e atıfta bulunur:

                TASKLISTGRID = $("#TASK_LIST_GRID").DataTable({
                    data : response,
                    columns : columns.AdoptionTaskInfo.columns,
                    paging: true
                });

Bu yüzden başarısız olduğu yerin burası olduğunu tahmin ediyorum.

HTML ID öğesi mevcuttur:

  <table id="TASK_LIST_GRID" class="table table-striped table-bordered table-hover dataTable no-footer" width="100%" role="grid" aria-describedby="TASK_LIST_GRID_info">
  <thead>
    <tr role="row">
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Solution</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Status</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Category</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Type</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Due Date</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Create Date</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Owner</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Comments</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Mnemonic</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Domain</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Approve</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Dismiss</th>
    </tr>
  </thead>
  <tbody></tbody>
</table>

Ayrıca, columns.AdoptionTaskInfo.columns ve yanıt nesnesi dizileri mevcuttur. Neyin yanlış olduğunu nasıl ayıklayacağınızdan emin değilim .. Herhangi bir öneri yardımcı olacaktır ..


2
.styleKodunuzda arayın . Tanımlanmamış bir değişkenin o özelliğine erişmeye çalışıyorsunuz. Oradan hata ayıklayabilirsiniz.
Jecoms

80
Getirmeye çalıştığınız sütun sayısının oluşturduğunuz <th> sayısıyla aynı olup olmadığını kontrol edin.
matrixguy

12
Bu soruna neden olan javascriptlerde tanımlanan sütun sayısı ile th sütun uyuşmazlığı sayısı.
Dhanuka777

Yanıtlar:


284

Sorun, <th> etiketlerinin sayısının yapılandırmadaki sütun sayısıyla ("sütunlar" anahtarına sahip dizi) eşleşmesi gerekmesidir. Belirtilen sütunlardan daha az <th> etiketi varsa, bu biraz şifreli hata mesajını alırsınız.

(doğru cevap zaten bir yorum olarak mevcut, ancak bulması daha kolay olması için cevap olarak tekrar ediyorum - yorumları görmedim)


2
başka bir nokta eklemek istiyorum, insanlar bir durumda yararlı buluyor olabilir, eğer dataSrc'yi tanımlamazsanız, json'unuzda "data" kullanın, başka bir isim kullanırsanız bu hatayı alırsınız.
Ahmed Sunny

Ayrıca, görünür olmayan ancak arama veya Editör gibi şeyler için eklenen sütunlarınız varsa, bunlar sütunlarınızın sonunda olmalıdır: [] liste.
Tim Dearborn

Çok teşekkürler, javascriptlerdeki sorunları merak ediyordum ..
Jimil Choksi

24

OLASI NEDENLER

  • Sayısı thTablo gövdesinin sütun sayısı tablo başlığında elemanları ya da alt bilgi farklılık ya kullanılarak tanımlanır columnsseçeneği.
  • Colspan özelliği thtablo başlığındaki öğe için kullanılır .
  • Seçenekte yanlış sütun dizini belirtildi columnDefs.targets.

ÇÖZÜMLER

  • thTablo üstbilgisindeki veya altbilgisindeki öğe sayısının columnsseçenekte tanımlanan sütun sayısıyla eşleştiğinden emin olun .
  • colspanTablo başlığında öznitelik kullanırsanız , thher sütun için en az iki başlık satırına ve bir benzersiz öğeye sahip olduğunuzdan emin olun . Daha fazla bilgi için Karmaşık başlığa bakın .
  • columnDefs.targetsSeçeneği kullanırsanız , sıfır tabanlı sütun dizininin mevcut sütunlara başvurduğundan emin olun.

BAĞLANTILAR

Bkz. JQuery DataTables: Yaygın JavaScript konsolu hataları - TypeError: Daha fazla bilgi için , tanımlanmamış olan 'style' özelliği okunamıyor .


13

Herhangi bir önerinin yardımcı olacağını söylediniz, bu yüzden şu anda DataTables'ım "tanımlanmamış özellik 'stilini' okuyamıyorum" sorununu çözdüm, ancak sorunum temelde veri tablosu başlatma aşamasında yanlış dizinler kullanmaktı columnDefs. 9 sütunum var ve indeksler 0, 1, 2, .., 8 ama 9 ve 10 için indeksler kullanıyordum, bu yüzden yanlış indeks sorununu düzelttikten sonra hata ortadan kalktı. Umarım bu yardımcı olur.

Kısacası, her yerde tutarlıysa sütun miktarınızı ve indekslerinizi izlemelisiniz.

Buggy Kodu:

    jQuery('#table').DataTable({
        "ajax": {
            url: "something_url",
            type: 'POST'
        },
        "processing": true,
        "serverSide": true,
        "bPaginate": true,
        "sPaginationType": "full_numbers",
        "columns": [
            { "data": "cl1" },
            { "data": "cl2" },
            { "data": "cl3" },
            { "data": "cl4" },
            { "data": "cl5" },
            { "data": "cl6" },
            { "data": "cl7" },
            { "data": "cl8" },
            { "data": "cl9" }
        ],
        columnDefs: [
            { orderable: false, targets: [ 7, 9, 10 ] } //This part was wrong
        ]
    });

Sabit Kod:

    jQuery('#table').DataTable({
        "ajax": {
            url: "something_url",
            type: 'POST'
        },
        "processing": true,
        "serverSide": true,
        "bPaginate": true,
        "sPaginationType": "full_numbers",
        "columns": [
            { "data": "cl1" },
            { "data": "cl2" },
            { "data": "cl3" },
            { "data": "cl4" },
            { "data": "cl5" },
            { "data": "cl6" },
            { "data": "cl7" },
            { "data": "cl8" },
            { "data": "cl9" }
        ],
        columnDefs: [
            { orderable: false, targets: [ 5, 7, 8 ] } //This part is ok now
        ]
    });

Bu beni kurtardı, teşekkürler. "ATargets" kullanıyorum: [7], bu yüzden hataya gidiyor, çünkü dizin 7 olan bir sütun yok. Legacy.datatables.net/usage/columns
fudu

1
Harika Cevabımın sorununuzu
çözmesine

10

colspanTablo başlığını ayarladığımda bu sorunu yaşadım . Yani masam şöyleydi:

        <thead>
            <tr>
                <th colspan="2">Expenses</th>

                <th colspan="2">Income</th>

                <th>Profit/Loss</th>
            </tr>
        </thead>

Sonra bir kez değiştirdim:

        <thead>
            <tr>
                <th>Expenses</th>
                <th></th>
                <th>Income</th>
                <th></th>
                <th>Profit/Loss</th>
            </tr>
        </thead>

Her şey yolunda gitti.


4

Giriş verilerinizde response[i]ve / response[i][j]olmadığından emin olun .undefinednull

Öyleyse, bunları "" ile değiştirin.


3

Yeni (diğer) bir tablo çizerken de olabilir. Bunu önce önceki tabloyu kaldırarak çözdüm:

$("#prod_tabel_ph").remove();


2

Çözüm oldukça basit.

  <table id="TASK_LIST_GRID" class="table table-striped table-bordered table-hover dataTable no-footer" width="100%" role="grid" aria-describedby="TASK_LIST_GRID_info">
  <thead>
    <tr role="row">
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Solution</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Status</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Category</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Type</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Due Date</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Create Date</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Owner</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Comments</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Mnemonic</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Domain</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Approve</th>
      <th class="sorting" tabindex="0" aria-controls="TASK_LIST_GRID" rowspan="1" colspan="1">Dismiss</th>
    </tr>
  </thead>
  <tbody></tbody>
</table>

                TASKLISTGRID = $("#TASK_LIST_GRID").DataTable({
                    data : response,
                    columns : columns.AdoptionTaskInfo.columns,
                    paging: true
                });
                
                //Note: columns : columns.AdoptionTaskInfo.columns has at least a column not definded in the <thead>

Not : sütunlar: columns.AdoptionTaskInfo.columns, tablo başlığında tanımlanmamış en az bir sütun içeriyor


1

Tuhaf bir şekilde, bir th / th çifti çok fazla olduğu için aşağıdaki hatayı alıyordum ve hala google beni buraya yönlendirdi. İnsanların bulabilmesi için onu yazılı olarak bırakacağım.

jquery.dataTables.min.js:27 Uncaught TypeError: Cannot read property 'className' of undefined
at ua (jquery.dataTables.min.js:27)
at HTMLTableElement.<anonymous> (jquery.dataTables.min.js:127)
at Function.each (jquery.min.js:2)
at n.fn.init.each (jquery.min.js:2)
at n.fn.init.j (jquery.dataTables.min.js:116)
at HTMLDocument.<anonymous> (history:619)
at i (jquery.min.js:2)
at Object.fireWith [as resolveWith] (jquery.min.js:2)
at Function.ready (jquery.min.js:2)
at HTMLDocument.K (jquery.min.js:2)

0

Benim durumumda, sunucu taraflı datatable'ı iki kez güncelliyordum ve bana bu hatayı veriyor. Umarım birine yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.