簡體   English   中英

全局變量在函數內不可用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM