首页 > 解决方案 > 如何将参数中的属性传递给函数

问题描述

我想创建函数以将任何属性或函数应用于所有选择器什么是正确的方法

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 }

标签: javascript

解决方案


两个变化:

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,这正是你的函数所做的,直到应用程序的顺序。


推荐阅读