coffeescript - 数组过滤不起作用

时间:2014-05-16 16:30:13

标签: javascript arrays coffeescript filtering

我正在尝试获取一个只包含具有background-image属性的元素的数组,但是,我的代码不起作用,我不确定是什么问题。

elements = document.getElementsByTagName("*")
[].filter.call elements, (el) =>
  if el.currentStyle
    return el.currentStyle['backgroundImage'] isnt 'none'
  else if window.getComputedStyle
    return document.defaultView.getComputedStyle(el,null).getPropertyValue('background-image') isnt 'none'

1 个答案:

答案 0 :(得分:1)

根据javascript documentation

  

filter()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。

因此您需要在使用之前存储已过滤的数组:

elements = document.getElementsByTagName("*")
filteredElements = [].filter.call elements, (el) =>
  if el.currentStyle
    return el.currentStyle['backgroundImage'] isnt 'none'
  else if window.getComputedStyle
    return document.defaultView.getComputedStyle(el,null).getPropertyValue('background-image') isnt 'none'

// filteredElements is your new array with the filtered elements.