在通过JavaScript改变风格方面存在问题

时间:2013-09-06 14:43:29

标签: javascript css html5 styles custom-data-attribute

您好我正在尝试更改具有特定属性的任何HTML标记的显示属性。 但经过多次尝试后,我无法更改标签属性。我的代码如下所示

function getAllElementsWithAttribute(attribute)
{
  var matchingElements = [];
  var allElements = document.getElementsByTagName('*');
  for (var i = 0; i < allElements.length; i++)
  {
    if (allElements[i].getAttribute(attribute))
    {
      // Element exists with attribute. Add to array.
      matchingElements.push(allElements[i]);
    }
  }
  return matchingElements;
}
tags = getAllElementsWithAttribute('data-shares');
for(i=0;i<tags.length;i++)
{
    tags[i].style.display = "none";
}

HTML已低于标记

<div  class="shareTools" data-shares="facebook" data-url="#" data-title="Facebook" data-description="Facebook">
    <div class="shareToolsBox">
        <ul class="shareToolsList">
            <li data-share="facebook">
                <span>Facebook</span>
            </li>
        </ul>
    </div>
</div>

有没有人知道如何更改任何标有i-e数据共享标记的标记样式......

2 个答案:

答案 0 :(得分:1)

将函数调用更改为:

tags = getAllElementsWithAttribute('data-shares');

这是关于JS Bin演示的工作:http://jsbin.com/ufogExo/1/具有<div>属性的data-shares都是隐藏的。

问题确实是你对函数调用参数的额外逗号。

答案 1 :(得分:0)

我相信这可以做你想要的:

function getAllElementsWithAttribute(attribute)
{
    var items = document.querySelectorAll('['+attribute+']'),
    i = items.length;
      while ( i-- > 0 && (items[i].style.display = 'none') );
}

getAllElementsWithAttribute('data-shares');

http://jsfiddle.net/754zR/