javascript - 将函数从 getElementById 重写为 getElementsByClassName 或 getElementsByTagName

标签 javascript getelementbyid typography getelementsbytagname getelementsbyclassname

我正在使用此代码 RobG来自this answer通过 id 将文本放入动态宽度容器中。但理想情况下我想同时在多个元素上使用它。我如何重写它以与 getElementsByClassNamegetElementsByTagName 一起使用?

<script>

function resize(el, factor) {

  // Get element width
  var width = el.offsetWidth;

  // set default for factor
  if (typeof factor == 'undefined') {
    factor = 5;
  }

  // Set fontsize to new size
  el.style.fontSize = (width / factor | 0) + 'px';
}

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

</script>

<div id="fit">Some text</div>

最佳答案

获取元素并在迭代中调用函数

function resize(el, factor) {
  // Get element width
  var width = el.offsetWidth;

  // set default for factor
  if (typeof factor == 'undefined') {
    factor = 5;
  }

  // Set fontsize to new size
  el.style.fontSize = (width / factor | 0) + 'px';
}

window.onload = function() {
  function doResize() {
      /* get a nodelist */
      var elems = document.getElementsByClassName('myClass');

      /* iterate over nodelist */
      for (var i=elems.length; i--;) {
          resize(elems[i], 6); // call function for each element
      }
  }
  window.onresize = doResize;
  doResize();
}

您最好使用 querySelectorAll('.myClass') 而不是 getElementsByClassName。 IE8 支持它,而 getElementsByClassName 不支持。

关于javascript - 将函数从 getElementById 重写为 getElementsByClassName 或 getElementsByTagName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20934084/

相关文章:

javascript - Hello World phonegap 应用程序崩溃

PHP foreach 循环,getElementById 的唯一 <select> id

html - 如何在 HTML 中创建小空间?

javascript - 把句子串分成子串=<最长单个词的长度

javascript - 如何将回调作为参数传递给另一个函数

javascript - 在 AngularJS Controller 之间共享数据

javascript - 使用 onclick 事件附加部分

javascript - 如果函数中的语句不起作用

php - 无法访问 HTML 中的输入 dom 变量

html - 我可以以毫米为单位发出媒体查询吗?