Rounds prices to the nearest $0.25
// ==UserScript==
// @name Etsy Price Rounder
// @version 1.99
// @description Rounds prices to the nearest $0.25
// @author JustAnOkapi
// @match https://www.etsy.com/*
// @grant none
// @license MIT
// @namespace https://greasyfork.org/users/1198856
// ==/UserScript==
(function() {
'use strict';
// Function to round all prices
function roundPrices() {
// Round prices in class
const priceElements = document.querySelectorAll('.currency-value');
for (const priceElement of priceElements) {
const priceValue = parseFloat(priceElement.textContent);
if (!isNaN(priceValue)) {
const roundedPrice = Math.round(priceValue * 4) / 4;
priceElement.textContent = roundedPrice.toFixed(2);
}
}
// Round prices in text nodes
const textNodes = document.createTreeWalker(
document.body,
NodeFilter.SHOW_TEXT,
null,
false
);
while (textNodes.nextNode()) {
const node = textNodes.currentNode;
const text = node.textContent;
// Use a regular expression to match prices in different formats
const roundedText = text.replace(/\$(\d+\.\d{2})/g, (match, price) => {
const roundedPrice = Math.round(parseFloat(price) * 4) / 4;
return '$' + roundedPrice.toFixed(2);
});
if (roundedText !== text) {
node.textContent = roundedText;
}
}
}
// Always up to date
const observer = new MutationObserver(roundPrices);
observer.observe(document.body, { childList: true, subtree: true });
})();