2017-09-25 1 views
0

Je cherche à écrire un script sur un site qui a un ensemble de valeurs changeantes. J'essaie de comprendre comment appeler la valeur du texte à l'intérieur d'une seule de ces entrées à la fois.Trouver la valeur d'une certaine classe (HTML)

Chacun de ces facteurs peut ressembler à ceci

<tr ng-repeat="(key, game) in crash.games.slice().reverse()" class="" style=""> 
<td ng-if="::game.crash > 199" class="crashHighResult">RANDOM NUMBER THAT I WANT TO SEE</td> 

tr est le parent de td et la valeur de texte à l'intérieur de td est ce que je suis en train de voir

Le seul problème que je suis l'expérience est qu'il y a jusqu'à 20 entrées stockées pendant ce temps et elles peuvent toutes avoir les mêmes classes et les mêmes parents que les autres, la seule différence étant la valeur du nombre aléatoire ...

Je pense que si je peux les tirer tous en même temps et peut-être créer un tableau avec ces valeurs, je pourrais faire ce que je dois faire, mais je suis un peu perplexe. Je suis très nouveau pour javascript et jquery et ceci est une expérience d'apprentissage pour moi. Merci de votre aide!

+0

si vous utilisez jquery: '$ ('. Classname')' peut être utilisé pour sélectionner tous les éléments de cette classe. – tech2017

+0

Alors, essayez-vous de créer un tableau de 'td's? – Andy

+0

Voulez-vous seulement la valeur d'un td spécifique, ou voulez-vous faire quelque chose avec le numéro de chaque td? – Confuzing

Répondre

1

Votre meilleur pari serait d'utiliser document.querySelectorAll si vous voulez comprendre certaines techniques JS natives. Il existe deux autres façons d'obtenir les éléments que vous voulez (getElementsByClassName et getElementsByTagName), mais ils ne jouent pas aussi bien avec forEach que le premier.

Donc, pour saisir les éléments:

let cells = document.querySelectorAll('td'); 

Et en boucle sur cette nodelist:

cells.forEach(function (cell) { 
    console.log(cell.textContent); 
}); 

Au moment le code enregistre uniquement le contenu du texte (votre numéro aléatoire) à la console , mais vous pouvez avoir une idée de ce que vous pouvez faire avec ces données.

Par exemple, pour obtenir le dernier (le plus récent?) Nombre aléatoire (la dernière cellule du nodelist) que vous utilisez:

let rnd = cells[cells.length - 1].textContent; 

l'espoir que cela vous aide.

+0

Ah oui, vous m'avez présenté quelques fonctions supplémentaires dont j'aurai probablement besoin. Merci beaucoup. Le plus récent est ajouté à la table en haut et non en bas assez intéressant, mais merci beaucoup! – agentzulu

+0

une autre question rapide ... j'ai utilisé du code pour trouver la longueur d'une table (moins de 2) avec console.log (document.querySelectorAll ('td.crashLowResult'). Length); Cependant, l'utilisation de .textContent avec cela me donne une console non définie et l'utilisation d'une connexion tableau à la classe me donne une erreur – agentzulu

+0

Rappelez-vous que 'querySelectorAll' renvoie un nodelist comme un tableau, donc vous devrez faire quelque chose comme' document.querySelectorAll ('td.crashLowResult') [0] .textContent' pour obtenir le contenu de la première cellule, par exemple. – Andy

1

Si vous devez sélectionner le premier tr td dans le tableau pour obtenir la valeur, en utilisant jQuery, vous pouvez sélectionner tous les éléments tr td, puis spécifier le premier.

$("tr td").first().text();

Ce sélecteur trouve tous les éléments tr td comme il traverse le Royaume, il trouvera la rangée supérieure dans la première table. La fonction first() renvoie un objet jquery du premier élément trouvé. Le text() obtient quel que soit le texte à l'intérieur des balises td, fondamentalement le même que le js innertext ou textcontent.

Si vous souhaitez effectuer le traitement avec toutes les valeurs, vous pouvez utiliser la fonction jquery selector each().

$("tr td").each(function (index , element) {console.log($(element).text())})

Cette boucle à travers tous les éléments et imprime leurs valeurs à la console, mais vous pouvez modifier la fonction pour additionner les valeurs, les mettre dans un tableau, ou autre.

+0

Merci beaucoup. D'un côté, y a-t-il une fonction jquery à tirer de n'importe quel autre endroit autre que le premier et le dernier? Comme 2ème, 3ème, 4ème et ainsi de suite? – agentzulu

+0

googling rapide m'a laissé utiliser la fonction .eq() et maintenant je suis tout ensemble! Je pense pouvoir enfin compléter mon script! Merci à tous pour votre aide! – agentzulu