我想在每个div中添加一个具有HTML代码的“文本”类的段落。div的数量未知。为此,我想使用for循环,但是它不起作用。您可以提供解决方案吗?谢谢 :)
https://jsbin.com/retanibika/1/edit?html,js,输出
的HTML
<section>
<!-- Première div. Index [0] -->
<div class="texte"></div>
</section>
<section>
<!-- Deuxième div. Index [1] -->
<div class="texte"></div>
</section>
JAVASCRIPT
class AddTexte {
constructor(){
this.blocTexte = document.querySelectorAll('.texte');
this.p = document.createElement('p');
}
texte(){
for(let i = 0; i < this.blocTexte.length -1; i++){
this.blocTexte[i].appendChild(this.p);
this.p.innerHTML = "Bla bla bla"
}
}
}
let newAddTexte = new AddTexte();
newAddTexte.texte();
使用this.blocTexte.length
代替,this.blocTexte.length - 1
以便循环达到texte
元素总数。
创建与元素一样多的段落.texte
元素。您可以通过p
在循环内部创建 来实现。这样做,删除this.p = document.createElement('p');
class AddTexte {
constructor() {
this.blocTexte = document.querySelectorAll('.texte');
}
texte() {
for (let i = 0; i < this.blocTexte.length; i++) {
const p = document.createElement('p');
p.innerHTML = "Bla bla bla"
this.blocTexte[i].appendChild(p);
}
}
}
let newAddTexte = new AddTexte();
newAddTexte.texte();
<section>
<!-- Première div. Index [0] -->
<div class="texte"></div>
</section>
<section>
<!-- Deuxième div. Index [1] -->
<div class="texte"></div>
</section>
<section>
<!-- Deuxième div. Index [1] -->
<div class="texte"></div>
</section>
<section>
<!-- Deuxième div. Index [1] -->
<div class="texte"></div>
</section>
<section>
<!-- Deuxième div. Index [1] -->
<div class="texte"></div>
</section>
我建议你去for ...of
循环。它可读性强,易于维护。
for ... of语句创建一个循环,循环访问可迭代对象,这些对象包括:内置String,Array,类似Array的对象(例如,参数或NodeList),TypedArray,Map,Set和用户定义的可迭代对象。它使用对象的每个不同属性的值调用要执行的语句来调用自定义迭代钩。- MDN
class AddTexte {
constructor() {
this.blocTexte = document.querySelectorAll('.texte');
}
texte() {
for (let texte of this.blocTexte) {
const p = document.createElement('p');
p.innerHTML = "Bla bla bla"
texte.appendChild(p);
}
}
}
let newAddTexte = new AddTexte();
newAddTexte.texte();
<section>
<!-- Première div. Index [0] -->
<div class="texte"></div>
</section>
<section>
<!-- Deuxième div. Index [1] -->
<div class="texte"></div>
</section>
<section>
<!-- Deuxième div. Index [1] -->
<div class="texte"></div>
</section>
<section>
<!-- Deuxième div. Index [1] -->
<div class="texte"></div>
</section>
<section>
<!-- Deuxième div. Index [1] -->
<div class="texte"></div>
</section>