我对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;
}
}
这里的主要问题是您使用了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>
如注释中所述,不能有多个使用相同的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>