javascript - 如何将参数中的属性传递给函数
问题描述
我想创建函数以将任何属性或函数应用于所有选择器什么是正确的方法
function applyToAll(elm,func)
{
let i = elm.length; while (i--) { elm[i].func; }
}
li = document.querySelectorAll("li");
hide = style.display = "none";
applyToAll(li,hide) // Uncaught ReferenceError: style is not defined
我可以像这样直接传递属性
let i = elm.length; while (i--) { elm[i].style.display = "none"; }
但我想让函数动态,所以我可以使用例如:
prop = innerHTML = "<b>something</b>";
let i = elm.length; while (i--) { elm[i].prop }
解决方案
两个变化:
function applyToAll(elm, func) {
let i = elm.length;
while (i--) {
func(elm[i]) // <---
}
}
li = document.querySelectorAll("li");
hide = e => e.style.display = "none"; // <---
applyToAll(li, hide)
变化1:func
不是方法,不能用点调用
变化 2:juststyle.display = ...
是一个立即计算的表达式,另一方面,e => e.style.display
是一个在调用时计算的函数。
作为旁注,querySelectorAll
返回一个NodeList
已经提供的forEach
,这正是你的函数所做的,直到应用程序的顺序。