我试图获得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