document.getElementsByName con wild character

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Buongiorno a tutti.
Quadro generale: sul nostro sito (che utilizza Wordpress) c'è una pagina con 8 prodotti che vendiamo singolarmente e una seconda pagina con 3 menù che devono essere acquistati con ll minimo d'ordine di 2 ciascuno.
Sto utilizzando un plugin per la gestione del carrello che, vista la semplicità della proposta, è perfetto (si chiama Simple Cart PayPal).
Posso utilizzare una sola istanza del carrelo sul sito, e anche questo mi va bene: sia che il cliente ordini dalla pagina dei piatti singoli che dalla pagina dei menù, tutto finisce in un'unico carrello.
Devo però controllare che se l'ordine comprende un menù, questo abbia come quantità minima 2.
Riesco a identificare se si tratta d un menù perchè i tre prezzi sono tutti superiori ai 75 euro, mentre tutti i singoli piatti hanno prezzi inferiori ai 30 euro).
Il valore di "quantità" lo recupero con
Codice:
var xq = document.getElementsByClassName("wspsc_cart_item_qty")[0].value;
Per quanto riguarda invece i prezzi, questi sono riportati sulla pagina del carrello con <input name="amount_1", name="amount_2" eccetera.
Sto provando a selezionare quindi tutti i nomi amount_* ma non riesco a capire come fare.
In una RegEx i caratteri wild dovrebbero essere .* ma se scrivo
Codice:
var xprod = document.getElementsByName("^amount_.").lenght;
ottengo UNDEFINED
E' possibile trovare sulla pagina i valori di tutti gli elementi il cui nome inizia con amount_ ?
Grazie per i sugggerimenti...
 
Ciao, il metodo getElementsByName() non supporta i caratteri wild o altre cose simili. Prova incece con querySelectorAll(), dove puoi usare una stringa basata sui selettori CSS.

Puoi quindi fare una roba del genere:
JavaScript:
var xprod = document.querySelectorAll('input[name^="amount_"]').length;

Prova e fai sapere.
 
Ultima modifica:
Ciao,
ho provato come indicato e mi ritorna sempre UNDEFINED.
Il miglior risultato fino ad ora l'ho ottenuto con document.getElementsByTagName("INPUT[name^='amount']").length;
che però mi dà zero come lenght... ovviamente se uso solo il tag INPUT me li conta tutti.
Ci sarà il modo di selezionare i valori contenuti negli input con nome amount(qualcosa)... ?
 
forse perché length va sempre scritto con la h finale... ho notato ora che prima lo hai scritto sbagliato e io ho copiaincollato sbagliato :p ... ora ho corretto il codice nel mio precedente post
 
azz.
che stupido... hai ragione! era scritto sbagliato... ho sbagliato la prima volta, poi copia e incolla cambiando solo qualche pezzo... e l'errore è rimasto!
Grazie!
Ora in effetti querySelectorAll funziona esattamente come ci si aspetta, ovviamente!
Alla prossima
 

Discussioni simili