如何根据标签在JavaScript中的顺序更改其内部HTML?

问题描述 投票:0回答:2

我对JavaScript相当陌生,并且正在从事较小的项目。

我想做的是将一堆标签的内部HTML更改为它们按顺序排列的数字。

让我解释一下。

我想从这里开始。

*Number <br>
*Number <br>
*Number

为此。

*1 <br>
*2 <br>
*3

纯粹是通过JavaScript执行的。

这是我现在所拥有的。

HTML

<p id="thisIsANumber">Number</p>

<p id="thisIsANumber">Number</p>

<p id="thisIsANumber">Number</p>

<button onclick="orderElements()">Order Elements</button>

JavaScript

function orderElements() {
  var reference = document.getElementById('thisIsANumber');
  for (var i = 0; i < 3; i++) {
    reference[i].innerHTML = i;
  }
}
javascript html for-loop innerhtml id
2个回答
0
投票

这里的主要问题是您使用了id而不是class。这样做的问题是id用于标识一个元素,而class可用于标识多个元素。如果您想要的是带编号的段落元素,而不是有序列表,则应使用此技巧:

function orderElements() {
  var reference = document.getElementsByClassName("thisIsANumber");
  for (var i = 0; i < 3; i++) {
    reference[i].innerHTML = i;
  }
}
<body>
  <p class="thisIsANumber">Number</p>

  <p class="thisIsANumber">Number</p>

  <p class="thisIsANumber">Number</p>

  <button onclick="orderElements()">Order Elements</button>
 </body> 

0
投票

如注释中所述,不能有多个使用相同的id的事物,而应使用class

例如,这说您有一个段落,而该段落的此[[种类是“编号的段落”:]”<p class="numbered-paragraph">

现在您可以选择所有具有该类的段落,对其进行循环并为每个段落指定一个数字。

此示例代码是显式的,因此很显然-可以缩短很多方法:

document.getElementById('numberGenerator') .addEventListener('click', function(e) { const paragraphs = document.querySelectorAll('.numbered-paragraph'); let i = 1; for (p of paragraphs) { p.innerText = 'paragraph number ' + (i++); } });
<p class="numbered-paragraph">Number</p>

<p class="numbered-paragraph">Number</p>

<p class="numbered-paragraph">Number</p>

<button id="numberGenerator">Order Elements</button>
© www.soinside.com 2019 - 2024. All rights reserved.