有没有办法清除所有 innerHTML?

Is there a way to clear all innerHTML's?

如标题所述,我想知道是否可以清除每个用 javascript 更改的 innerHTML。

例如,如果我有 20 个函数,每个函数都替换了 p-tag 的 innerHTML,我是否可以让它们全部不包含任何内容(通过单击按钮)而不更改每个函数的 .innerHTML他们?

function resetAll() {
  outputOne.innerHTML = "";
  outputTwoA.innerHTML = "";
  outputTwoB.innerHTML = "";
  outputThreeA.innerHTML = "";
  outputThreeB.innerHTML = "";
  outputThreeC.innerHTML = "";
}

这是我不想做的一个例子。

我知道我可以刷新页面,但这不是我要的解决方案。

仅使用 javascript 你将需要遍历所有这些。您可以使用常见的 class:

var clearUs = document.querySelectorAll('.common-class');
var index = 0, length = clearUs.length;
for ( ; index < length; index++) {
    clearUs[index].innerHTML = '';
}

如果您想使用类似 jquery 的东西,它的代码更少,但仍然在后台发生循环,您不需要查看或输入它:

$('.common-class').html('');

创建一个class,设置p标签和select全部通过这个class和运行一个用于清理所有。

只需在更改方法中缓存更改的元素,然后遍历更改的数组并清除那里的 innerHTML。

您当然仍然可以检查更改后的数组是否已包含您要推入的元素,但举个例子,我认为这就足够了

var changed = [];

function change(pIndex, text) {
  var all = document.getElementsByTagName('p');
  if (!all || !all[pIndex]) {
    // element not found
    return;
  }
  all[pIndex].innerHTML = text;
  changed.push(all[pIndex]);
}

function clearAll() {
  for (var i = 0, len = changed.length; i < len; i++) {
    changed[i].innerHTML = '';
  }
  changed.splice(0, changed.length);
}
<p></p>
<p></p>
<p></p>
<button onclick="change(0, 'test')" type="button">Set p 1</button>
<button onclick="change(1, 'test')" type="button">Set p 1</button>
<button onclick="change(2, 'test')" type="button">Set p 1</button>
<button onclick="clearAll();" type="button">Clear</button>