J'ai été capable de demander à QuerySelectorAll le nom de classe correct, une balise et href. J'essaie de scinder mon résultat afin que je n'ai que le sku #.
html p> js p>
4 Réponses :
Vous pouvez utiliser une expression régulière simple pour correspondre au SKU #
p>
<div class="mini-cart-product-name">
<a href="http://example.com/product/12345.html">Product 1</a>
</div>
<div class="mini-cart-product-name">
<a href="http://example.com/product/67890.html">Product 2</a>
</div>Merci. Je reçois une erreur quand je l'exécute. Je ne sais pas si c'est moi ou un problème avec le code.
//Since you revised your criteria, you can do this with a simple string substring and replace
const skuNum = URL.item(i).substring(URL.item(i).lastIndexOf('/') + 1).replace('.html', '');
//Don't use this if you have something other than numbers in the capture string, see above
//Declare your regular expression, this could be declared before your loop
const reg = /(\d+)\.html/g;
//These next two go inside your loop
//Get the match collection of captures from your regular expression
const matches = reg.exec(URL.item(i));
//Get your sku # from the match colletion
const skuNum = matches[1];
Les deux de la réponse mentionnée précédemment sont correctes, mais une telle approche semble douloureuse. Si vous pouvez modifier votre code HTML, je vous suggérerais de transmettre ces SKU comme attribut de données.
function GetCartProducts() {
var SKUs = [];
var URL = document.querySelectorAll(".mini-cart-product-name a");
for (var i = 0; i < URL.length; i++) {
SKUs[i] = URL[i].dataset.sku;
}
console.log(SKUs);
}
GetCartProducts();
Merci de votre réponse, mais il n'y a aucun moyen de modifier le HTML à ce stade à temps.
La fonction peut être une seule ligne comme celle-ci.
p>
<div class="mini-cart-product-name"> <a href="http://example.com/product/12345.html">Product 1</a> </div> <div class="mini-cart-product-name"> <a href="http://example.com/product/67890.html">Product 2</a> </div>
Merci. Cette réponse fonctionne bien pour mes besoins actuels.
Utiliser des expressions régulières.
Merci. Je ne suis pas familier avec regex. Est-ce que j'utiliserais la regex avant ou après la boucle?
S'il vous plaît voir ma réponse pour une utilisation régulière d'expression dans ce cas.
Merci pour l'exemple. Je viens d'essayer ça. Et si mon sku est amixe de chiffres et de lettres. Par exemple: Fdufg002. Comment cela changerait-il l'expression?
Cela changerait un peu, As / D + recherche des occurrences où les numériques existent sous forme de 1 ou plusieurs caractères numériques.
J'ai modifié ma réponse pour vous donner quelque chose qui fonctionnerait avec une combinaison de lettres et de chiffres utilisant juste
substrant code> etremplacer code> etlastindexof code>