温馨提示:本文翻译自stackoverflow.com,查看原文请点击:javascript - Add paragraph with a for loop
javascript

javascript - 用for循环添加段落

发布于 2020-03-27 11:06:23

我想在每个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();

查看更多

查看更多

提问者
Leakcim
被浏览
24
mahan 2019-07-05 16:20
  • 使用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>