Sostituire prezzo 0,00€ con scritta "Gratis"
Autore: Stiac Engineering
Visite 973,
Followers 5,
Condiviso 0
Buongiorno a tutti,
spero che le vacanze stiano passando piacevolmente.
Vorrei domandare un aiutino, se possibile, per perfezionare un codice che ha il ruolo di sostituire il prezzo 0,00€ con la scritta Gratis nel consueto catalogo prodotti di WebSite X5 Pro (e se applicabile in cartsearch e cart).
Esempio:
Ho notato che se viene variata la "variante prodotto" la scritta scompare, mentre in cart e cartsearch non sono riuscito a implementare il tutto.
Il codice usato potete trovarlo qui (https://codepen.io/stiac/pen/WNwxwEz).
Postato il
Ciao,
il tuo codice che cambia il prezzo viene eseguito all'onload della pagina (window.onload = stiacFreePrice) e la select delle varianti fa la stessa cosa andando a sovrascrivere la tua modifica. Dovresti fare in modo che quando cambia il valore della select venga di nuovo eseguita la tua funzione di cambio prezzo.
Domanda: ma il tag che hai usato <price> dove lo hai preso? non mi risulta sia un tag standard...
Autore
Onestamente non ne ho la più pallida idea.
Faccio da autodidatta dunque online oppure mi è presa la vena artistica nel momento in cui ho buttato giù il codice.
Autore
Provando a sostituire nel codice il tag con uno standard non riesco a far funzionare il CSS.
Se metto ad esempio:
<div class="button">GRATIS!</div>
Il codice non funziona. Rimane sempre 0,00€.
Quando si utilizzano i doppi apici e gli apici singoli in uno script, bisogna stare attenti ad "alternarli".
Nel tuo caso, devi sostituirli con quelli singoli:
<span class='button'>GRATIS!</span> (meglio sostituire il tag div con span)
Per far funzionare il codice anche nel carrello e la nuova ricerca, in aggiunta a quanto scritto da Esterre Fatto, dovresti anche ritardare la funzione con, per esempio, setTimeout()
Autore
Buongiorno ragazzi,
grazie di cuore per le dritte. Ho provato a inserire nel codice:
window.onchange=stiacFreePrice;
setTimeout(stiacFreePrice(), 3000);
Nella pagina standard pare funzionare con un piccolo problema. Avendo impostato 0,00€ come target da sostituire di conseguenza va a sostituire le cifre simili, dunque 140,00 € diventa 14GRATIS! e così via.
Come posso circoscrivere il replace?
Con, per esempio, un'espressione regolare:
var res = str.replace(/^0,00.€$/, "<span class='button'>GRATIS!</span>");
Posto anche immagine, nel caso il codice venisse "segato":
Ti linko un editor (con esempio) molto utile per fare pratica con le regex:
https://regex101.com/r/AAwd8e/1
Autore
Nela pagina normale funziona a meraviglia!
Sto provando ad aggiornare online, connessione permettendo.
Ho provato in /cart/ e /cartsearch/ tuttavia non va. Secondo me è un problema di document.getElementById.