Глобальная переменная недоступна внутри функции?
Я работаю на воспроизводя поле живого фильтра с handsontable, основанный на встроенной функции поиска в http://docs.handsontable.com/0.15.0-beta6/demo-search-for-values.html.
Сейчас я работаю с простейшим вариантом использования (http://jsfiddle.net/kc11/uL3L4teL/) из документов.
Как объяснено в документации, в этом коде, если ввести строку поиска, вы получите соответствующие клетки, выводимые на консоль с помощью следующей функции:
Handsontable.Dom.addEvent(searchFiled, 'keyup', function (event) {
var queryResult = hot.search.query(this.value);
console.log(queryResult);
hot.render();
Я хочу, чтобы захватить строки в данном массив, который соответствует строке поиска и фильтрует исходные данные «данные» в строке поиска, прежде чем перерисовывать таблицу. Это частично работает с использованием:
Handsontable.Dom.addEvent(searchFiled, 'keyup', function (event) {
var queryResult = hot.search.query(this.value);
console.log(queryResult);
rows = getRowsFromObjects(queryResult);
console.log('hot', hot.getData());
console.log('data', data);
var data = hot.getData();
var filtered = data.filter(function(d, ix) { return rows.indexOf(ix) >= 0; });
console.log('filtered', filtered);
hot.loadData(filtered);
});
Как вы можете видеть в http://jsfiddle.net/uL3L4teL/2/, но мне нужно заменить
var data = hot.getData();
(а handsontable функции, которая получает текущие данные в таблице) с глобальными «данными» (определяется вверху) для поиска работы. Но глобальные данные не определены в функции. Как я могу это исправить?
'var data;' поднимается вверх, а переменная будет неопределенной, пока не будет достигнута линия 'data = hot.getData()'. Используйте другое имя переменной или 'window.data', если это глобальная переменная. –
Возможный дубликат [Удивлен, что глобальная переменная имеет неопределенное значение в JavaScript] (http://stackoverflow.com/questions/9085839/surprised-that-global-variable-has-undefined-value-in-javascript) – JJJ