Hi there,
I tried to round repeater text. The function worked well in preview mode. I assume the repeater are already load in preview mode. But, when I refresh the page or i am on the publish web page, my function do not work. The following error come out : Error: The element selector function (usually $w) cannot be used before the page is ready
This is my code :
import wixData from 'wix-data';
formatMontantsPage('#listRepeater', '#text50');
formatMontantsPage('#repeater1', '#text53');
function formatNumber(decimalPrecision) {
return (Math.round(decimalPrecision * 100) / 100).toFixed(2);
}
function separerMilles(stringNumber) {
let partieNumeriqueFormatte = parseInt(stringNumber).toLocaleString();
let partieDecimale = stringNumber.slice( stringNumber.indexOf('.') );
return partieNumeriqueFormatte + partieDecimale;
}
function formatMontantsPage(repeteur, nomChamp){
/*Line64 with the error*/ $w(repeteur).forEachItem( ($item, itemData, index) => {
$item(nomChamp).text = separerMilles(formatNumber(itemData.montant) );
} );
}
I have try to put onReady a little bit everywhere, change forEachItem by onItemReady and add a delay before all. Without succes, I ask for your generosity !
On preview mode :
On publish site :
Thanks !
Okeyyy mon ami, faisons quelques changements sur ton code, excuse moi de la demontage de ton code ![:grin: :grin:](https://emoji.discourse-cdn.com/google_classic/grin.png?v=12)
import wixData from 'wix-data';
var repeteur = [], nomChamp = [];
repeteur[0] = "#listRepeater";
repeteur[1] = "#repeater1";
nomChamp[0] = "#text50";
nomChamp[1] = "#text53";
$w.onReady(()=>{
$w(repeteur[0]).onItemReady(($item,itemData,index)=>{
$item(nomChamp[0]).text = separerMilles(formatNumber(itemData.montant));
});
$w(repeteur[1]).onItemReady(($item,itemData,index)=>{
$item(nomChamp[1]).text = separerMilles(formatNumber(itemData.montant));
});
});
function formatNumber(decimalPrecision) {
return (Math.round(decimalPrecision * 100) / 100).toFixed(2);
}
function separerMilles(stringNumber) {
let partieNumeriqueFormatte = parseInt(stringNumber).toLocaleString();
let partieDecimale = stringNumber.slice( stringNumber.indexOf('.') );
return partieNumeriqueFormatte + partieDecimale;
}
Et voila, ton code est plus la … tralala…
![](https://global.discourse-cdn.com/wix/original/3X/1/3/13165cb028256093c9442d8a327b5a9f48656029.gif)
![](https://global.discourse-cdn.com/wix/original/3X/b/f/bf2605c0f8fe2889adfee6b8d803f1ce683e4ce5.gif)
1 Like
Wow, c’est gentil de ton temps et de ta vitesse !
Le résultat est le même que mon imprime écran On publish site, mais sans le message d’erreur. ![:roll_eyes: :roll_eyes:](/images/emoji/google_classic/roll_eyes.png?v=12)
Pourtant j’ai log les résultats
console.log(separerMilles(formatNumber(itemData.montant)));
il m’a bien sorti 1 320.00 mais le
console.log((nomChamp[1]).text);
m’a renvoyé undefined
@alexi_cliche
Petit autre example pour toi… regard bien et trouve la difference!
$w.onReady(async function () {
let value = 222222222
let xxx = await separerMilles(formatNumber(value)); console.log(xxx)
$w('#text1').text = xxx
});
function formatNumber(decimalPrecision) {
return (Math.round(decimalPrecision * 100) / 100).toFixed(2);
}
function separerMilles(stringNumber) {
let partieNumeriqueFormatte = parseInt(stringNumber).toLocaleString();
let partieDecimale = stringNumber.slice( stringNumber.indexOf('.') );
return partieNumeriqueFormatte + partieDecimale;
}
![](https://global.discourse-cdn.com/wix/original/3X/5/e/5e18021e5e93e235a65b24f98eda58579b00b043.gif)