如何让getElementsByClassName定位所有标记元素 - 还有更好的选择吗?

时间:2013-08-30 16:05:49

标签: javascript class element getelementbyid getelementsbyclassname

对不起,我认为这个问题的答案已经发布了,但我看了,我很难应用它。

我正在使用RobG(https://stackoverflow.com/a/15488590/1490943)发布的FitText非库替代方案。它很棒,但我想将它应用于许多元素,而不仅仅是一个元素。我正在拼凑如何替换getElementById ......

window.onload = function() {
  function doResize() {resize(document.getElementById('d0'), 5);}
  window.onresize = doResize;
  doResize();
}

http://jsfiddle.net/cgwM4/

...使用getElementsByClassName ...

window.onload = function() {
  function doResize() {resize(document.getElementsByClassName('d0')[0], 5);}
  window.onresize = doResize;
  doResize();
}

http://jsfiddle.net/cgwM4/2/

...但我无法弄清楚如何定位用该类标记的所有元素而不仅仅是特定的元素。而且我想知道是否有一种替代方案可以在早期的MSIE中运行 - 一种在不使用ClassName的情况下获得所有类的方法。

我很遗憾对此无知。这很明显,但我不知道从哪里开始......谢谢你看看。

1 个答案:

答案 0 :(得分:3)

你所要做的就是循环使用它们:

function doResize() {
    var qsa = document.querySelectorAll(".d0"), l = qsa.length, i;
    for( i=0; i<l; i++) resize(qsa[i],5);
}

请注意,我使用的是querySelectorAll而不是getElementsByClassName - 这可以在IE8中启用支持。如果你真的需要比这更早的时候,你可能想要使用name属性,因为即使是古老的IE支持getElementsByName