Javascript Getting TypeError:undefined不是handsontable.validateCells()上的函数

Javascript Getting TypeError:undefined不是handsontable.validateCells()上的函数,javascript,handsontable,Javascript,Handsontable,调用Handsontable的方法validateCells()时出现以下错误 我的代码: html 未捕获类型错误:未定义不是函数 handsontable.full.js:4279ValidatorsQueue.checkIfQueueIsEmpty handsontable.full.js:4279ValidatorsQueue.removeValidatorFormQueue handsontable.full.js:4273(匿名函数) handsontable.full.js:481

调用
Handsontable
的方法
validateCells()
时出现以下错误

我的代码:

html

未捕获类型错误:未定义不是函数 handsontable.full.js:4279ValidatorsQueue.checkIfQueueIsEmpty handsontable.full.js:4279ValidatorsQueue.removeValidatorFormQueue handsontable.full.js:4273(匿名函数) handsontable.full.js:4814完成handsontable.full.js:4383(匿名) 函数)handsontable.full.js:4398(匿名函数)


您在没有回调的情况下调用hot.validateCells(),这导致了问题

检查handsontable.full.js以了解以下方法:

function ValidatorsQueue() {.....}
 this.validateCells = function(callback) {....}

可能与此问题有关:

步骤1是将代码简化为一个新的版本。
document.addEventListener("DOMContentLoaded", function() {

  var people = [
      {id: 1, name: {first: 'Joe', last: 'Fabiano'}, ip: '0.0.0.1', email: 'Joe.Fabiano@ex.com'},
      {id: 2, name: {first: 'Fred', last: 'Wecler'}, ip: '0.0.0.1', email: 'Fred.Wecler@ex.com'},
      {id: 3, name: {first: 'Steve', last: 'Wilson'}, ip: '0.0.0.1', email: 'Steve.Wilson@ex.com'},
      {id: 4, name: {first: 'Maria', last: 'Fernandez'}, ip: '0.0.0.1', email: 'M.Fernandez@ex.com'},
      {id: 5, name: {first: 'Pierre', last: 'Barbault'}, ip: '0.0.0.1', email: 'Pierre.Barbault@ex.com'},
      {id: 6, name: {first: 'Nancy', last: 'Moore'}, ip: '0.0.0.1', email: 'Nancy.Moore@ex.com'},
      {id: 7, name: {first: 'Barbara', last: 'MacDonald'}, ip: '0.0.0.1', email: 'B.MacDonald@ex.com'},
      {id: 8, name: {first: 'Wilma', last: 'Williams'}, ip: '0.0.0.1', email: 'Wilma.Williams@ex.com'},
      {id: 9, name: {first: 'Sasha', last: 'Silver'}, ip: '0.0.0.1', email: 'Sasha.Silver@ex.com'},
      {id: 10, name: {first: 'Don', last: 'Pérignon'}, ip: '0.0.0.1', email: 'Don.Pérignon@ex.com'},
      {id: 11, name: {first: 'Aaron', last: 'Kinley'}, ip: '0.0.0.1', email: 'Aaron.Kinley@ex.com'}
    ],
    example1 = document.getElementById('example1'),
    example1console = document.getElementById('example1console'),
    settings1,
    ipValidatorRegexp,
    emailValidator;

  ipValidatorRegexp = /^(?:\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b|null)$/;
  emailValidator = function (value, callback) {
    setTimeout(function(){
      if (/.+@.+/.test(value)) {
        callback(true);
      }
      else {
        callback(false);
      }
    }, 1000);
  };

  settings1 = {
    data: people,
    beforeChange: function (changes, source) {
      for (var i = changes.length - 1; i >= 0; i--) {
        // gently don't accept the word "foo" (remove the change at index i)
        if (changes[i][3] === 'foo') {
          changes.splice(i, 1);
        }
        // if any of pasted cells contains the word "nuke", reject the whole paste
        else if (changes[i][3] === 'nuke') {
          return false;
        }
        // capitalise first letter in column 1 and 2
        else if ((changes[i][1] === 'name.first' || changes[i][1] === 'name.last') && changes[i][3].charAt(0)) {
          changes[i][3] = changes[i][3].charAt(0).toUpperCase() + changes[i][3].slice(1);
        }
      }
    },
    afterChange: function (changes, source) {
      if (source !== 'loadData') {
        example1console.innerText = JSON.stringify(changes);
      }
    },
    colHeaders: ['ID', 'First name', 'Last name', 'IP', 'E-mail'],
    columns: [
      {data: 'id', type: 'numeric'},
      {data: 'name.first'},
      {data: 'name.last'},
      {data: 'ip', validator: ipValidatorRegexp, allowInvalid: true},
      {data: 'email', validator: emailValidator, allowInvalid: true}
    ]
  };
  var hot = new Handsontable(example1, settings1);
  function bindDumpButton() {
      if (typeof Handsontable === "undefined") {
        return;
      }

      Handsontable.Dom.addEvent(document.body, 'click', function (e) {

        var element = e.target || e.srcElement;

        if (element.nodeName == "BUTTON" && element.name == 'dump') {
          var name = element.getAttribute('data-dump');
          var instance = element.getAttribute('data-instance');
          var hot = window[instance];
          console.log('data of ' + name, hot.getData());
        }
      });
    }
  bindDumpButton();
  hot.validateCells();
});
function ValidatorsQueue() {.....}
 this.validateCells = function(callback) {....}