1

嗨,我正在尝试更改具有特定属性的任何 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>

有谁知道如何更改任何具有属性的标签的标签样式,即数据共享...

4

2 回答 2

1

将函数调用更改为:

tags = getAllElementsWithAttribute('data-shares');

这是一个 JS Bin 演示: http: //jsbin.com/ufogExo/1/<div>带有属性的sdata-shares都被隐藏了。

问题确实是您在函数调用参数上的额外逗号。

于 2013-09-06T14:47:47.833 回答
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/

于 2013-09-06T15:04:10.093 回答