[英]Global variable unavailable within function?
我正在基於http://docs.handsontable.com/0.15.0-beta6/demo-search-for-values.html上的內置搜索功能,使用handontable再現實時篩選器框。
現在,我正在使用文檔中最簡單的用例( 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();
(一個可動手操作的函數,用於獲取表中的當前數據)以及全局“數據”(在頂部定義),以便進行搜索。 但是全局數據在函數中未定義。 我怎樣才能解決這個問題?
如果您指的是“頂部”的“全局”數據變量是此變量
var
data = [
['Nissan', 2012, 'black', 'black'],
['Nissan', 2013, 'blue', 'blue'],
['Chrysler', 2014, 'yellow', 'black'],
['Volvo', 2015, 'yellow', 'gray']
]
那么那不是全球性的。 該變量是DOMContentLoaded事件處理函數的局部變量。 我假設即使您在同一塊中聲明了其他事件處理程序,也將在不同的范圍內調用它們,從而使該變量不可用。 正如注釋中所建議的那樣,您可以將其分配給諸如window之類的全局變量,也可以僅在全局范圍內聲明它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.