我試圖獲得options
或者理想情況下dynamicTable
從initializeTable
傳遞到applyTableFilters
函數,我在獲取期望值時遇到問題。我使用List.js來創建動態表,並且我需要傳遞或重新創建dynamicTable
對象,以便我可以繼續並使用它來過濾表。將參數從一個函數傳遞到另一個而不調用它
下面是從HTML表格創建List.js對象的函數:
function initializeTable(options) { // initializes table to be dynamic using List.js functions
var dynamicTable = new List("table-content", options);
dynamicTable.on("updated", function (list) { // writes a message to the user if no results are found
if (list.matchingItems.length == 0) {
document.getElementById("no-results").style.display = "block";
}
else {
document.getElementById("no-results").style.display = "none";
}
});
console.log(dynamicTable);
console.log(options);
console.log(arguments.length);
applyTableFilters.bind();
}
我已經嘗試不同的方法來將變量傳遞給下面的功能。我試過.call
,applyTableFilters(args)
和.apply
,但問題是我不希望函數在這裏執行,只有當按鈕的點擊事件關閉時(這些函數中沒有顯示)。
這是我想的對象傳遞給,然後繼續用它來使過濾器的功能功能:
function applyTableFilters(dynamicTable) {
var form = document.getElementById("filter-form");
//console.log(options);
//var dynamicTable = new List("table-content", options);
console.log(dynamicTable);
var filters = form.querySelectorAll('input[type="checkbox"]:checked');
dynamicTable.filter(function (item) {
console.log(item);
console.log(item._values);
if (item.values().id == 2) {
return true;
}
else {
return false;
}
//var filterStrings = [];
//console.log(filters);
//for (var i = 0; i < filters.length; i++) {
// var filterVal = filters[i].value;
// var filterString = "(" + item.values().column == filterVal + ")"; // filterVal.contains(item.values().column) ||
// filterStrings.push(filterString);
// console.log(filterVal);
// console.log(filterString);
//}
//console.log(filterStrings);
//var filterString = filterStrings.join(" && ");
//console.log(filterString);
//return filterString;
});
}
我使用:因爲我在兩者之間
applyTableFilters.bind(this, dynamicTable/options);
applyTableFilters.bind(null, dynamicTable/options);
applyTableFilters.bind(dynamicTable/options);
切換如果結束工作等,不需要兩者都通過。我總是得到一個傳入的鼠標事件,這甚至不是我正在尋找的正確類型的對象。我怎樣才能讓正確的對象通過?第一個函數中的所有值也不是空的,並且按預期填充,所以它不是原始變量未定義或爲空。提前致謝。
如何才能創建一個函數範圍內,你可以包裝該功能與其他功能預先包括你想要的參數值。然後在需要時使用其他參數調用包裝函數。這裏有一個簡單的[JSFiddle示例](https://jsfiddle.net/BloodyKnuckles/76bq0pyw/)我的意思。 – bloodyKnuckles
@bloodyKnuckles我曾嘗試過這樣做,但我不明白在這種情況下如何工作。我將有一個'shell()'函數示例,它接受'dynamicTable'變量並將其饋入最後一個函數,但爲了提供它,它需要我需要傳入的相同變量,這是怎麼回事工作?防爆。 'var dynamicTable = shell()'但是需要傳入一個參數才能工作,明白我的意思? – LaLaLottie