Экземпляр документа в обратном вызове JavaScript? - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть HTML-код, который отображает таблицу при первой загрузке.

Обратный вызов, который перерисовывает таблицу по событию переключателя, выдает две ошибки во время выполнения.

TypeError: docInstance.getElementById не является функцией

TypeError: document.getElementById (...) имеет значение null

Код является частичным, поскольку я удалил пользовательские интерфейсы.

HTML-код

<div id = "mytableanchor1" class="mytableanchor1"></div>
<div id = "mytableanchor2" class="mytableanchor2"></div>
<table>
<th>Select radio button:</th>
  <tr>
      <td>
      <input type="radio" name="button1" value="1" checked>1&nbsp; 
      <input type="radio" name="button1" value="2">2&nbsp; 
      </td>
  </tr>      
</table>

Функции JavaScript

<script>

function GetView(data)
{          
   var view = new google.visualization.DataView(data);
   return view;
}       

function RenderTable(data, elementId, docInstance) 
{
  var gdatatable = new google.visualization.DataTable();

  ..
  // initialize gdatatable with custom colors for cells using data
  ..

  // anchor the table at given html element
  var table = new google.visualization.Table (docInstance.getElementById(elementId));

  // draw the table
  table.draw(GetView(gdatatable), {showRowNumber: true/*some settings*/});

}

Первая загрузка кода JavaScript

var global_data;
var global_buttonValue = '1';

...
...
global_data = data;

// pass document instance
RenderTable(global_data,'mytableanchor1', document); 
...          
...

Javascript код обратного вызова, который не работает

function DocumentReady()
{                  
     // pass document instance
     $(document).on('click', "input[name=button1]", RenderTableCallback($(document)));
} 

// using closure scope to pass document instance as param to callback
// read about it here http://www.jstips.co/en/javascript/passing-arguments-to-callback-functions/
function RenderTableCallback(docInstance) 
{
    return function() {

        global_buttonValue = $(this).val();        
        ..
        // modify global_data using global_buttonValue  
        ..
        // now render global_data in table
        RenderTable(global_data,'mytableanchor1', docInstance);
  }
}

</script>

=======

FIX

Исправлено использование документа вместо $ (document) в функции DocumentReady ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...