J'ai une balise avec la même classe, je veux obtenir chacune leur valeur et l'ajouter à un div comment le faire
<p class="adr">location1</p> <p class="adr">location2</p> <p class="adr">location3</p> <p class="adr">location4</p> for (i=1;i<$(".adr").length;i++) { $("#test").append($(".adr").html() + "</br>"); }
le résultat:
location1
location1
location1
location1
il semble avoir ajouté 4 fois la première classe, comment obtenir 1 et 2 et 3 et 4?
5 Réponses :
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <p class="adr">location1</p> <p class="adr">location2</p> <p class="adr">location3</p> <p class="adr">location4</p> <div id =test></div>
var rows = $(".adr"); for (var i = 0; i < rows.length; i++) { $("#test").append($(rows[i]).html() + "<br>") }
Utilisez each
dans jquery pour obtenir le texte de toutes les classes adr
. Ne pas ajouter
ligne par ligne car cela prend plus de temps d'exécution.Essayez d'ajouter dans son ensemble, j'espère que cela aide
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <p class="adr">location1</p> <p class="adr">location2</p> <p class="adr">location3</p> <p class="adr">location4</p> <div id =test></div>
var str='' $('.adr').each(function(e){ str+=$(this).text()+ "<br>" }) $("#test").html(str)
Vous pouvez utiliser la méthode each ()
. Deuxièmement, sélectionner "#test"
et ".adr"
est une mauvaise idée de les déclarer comme variable globale et de les utiliser.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <p class="adr">location1</p> <p class="adr">location2</p> <p class="adr">location3</p> <p class="adr">location4</p> <div id="test"> </div>
document.querySelector('#test').innerHTML = [...document.querySelectorAll('.adr')].map(x => x.innerHTML).join("<br>")
querySelectorAll ()
et map()
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <p class="adr">location1</p> <p class="adr">location2</p> <p class="adr">location3</p> <p class="adr">location4</p> <div id="test"> </div>
let elms = $(".adr"); let test = $('#test'); elms.each(function(){ test.append($(this).html() + "<br>") })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <p class="adr">location1</p> <p class="adr">location2</p> <p class="adr">location3</p> <p class="adr">location4</p> <div id="test"></div>
$('#test').append($('.adr').clone());
Vous pouvez ajouter tous les éléments correspondants avec .adr
en utilisant append () . Mais seulement cela ajouterait techniquement les éléments d'origine et en retirerait où il était auparavant situé dans le DOM. Donc, clonez () les pour créer une nouvelle copie de tous les éléments et conserver également leur état précédent .
$ ('. something') renvoie un tableau, vous avez donc besoin de $ ('. something') [i] pour récupérer chaque élément du tableau. Vous appelez trois fonctions jQuery pour chaque itération de la boucle - inefficace. Appelez-les une fois chacun avant la boucle, en les affectant à une variable, puis utilisez la variable au lieu des appels jQuery.
$ ("# test"). append ($ (". adr"). eq (i) .html () ...