Не работает JS в шаблоне, меняются < > на &gt

Я пытаюсь сделать преобразование суммы в пропись с помощью JS в шаблоне счета вот код:

        function numberToWords(num) {
            const ones = ['ноль', 'один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять'];
            const teens = ['десять', 'одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать'];
            const tens = ['', '', 'двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто'];
            const thousands = ['', 'тысяча', 'миллион', 'миллиард'];
            const convertThreeDigits = (n) =&gt; {
                let str = '';
                const h = Math.floor(n / 100);
                const t = Math.floor((n % 100) / 10);
                const o = n % 10;
                if (h &gt; 0) {
                    str += ones[h] + ' сто ';
                }
                if (t &gt; 1) {
                    str += tens[t] + ' ';
                    str += ones[o];
                } else if (t === 1) {
                    str += teens[o];
                } else {
                    str += ones[o];
                }
                return str.trim();
            };
            let integerPart = Math.floor(num);
            let fractionalPart = Math.round((num - integerPart) * 100);
            let integerWords = '';
            let fractionWords = '';
            if (integerPart === 0) {
                integerWords = ones[0];
            } else {
                let i = 0;
                while (integerPart &gt; 0) {
                    const threeDigitChunk = integerPart % 1000;
                    if (threeDigitChunk &gt; 0) {
                        integerWords = convertThreeDigits(threeDigitChunk) + ' ' + thousands[i] + ' ' + integerWords;
                    }
                    integerPart = Math.floor(integerPart / 1000);
                    i++;
                }
            }
            if (fractionalPart &gt; 0) {
                fractionWords = convertThreeDigits(fractionalPart) + ' копеек';
            }
            return (integerWords + ' рублей ' + fractionWords).trim();
        }
        function formatAmount(amount) {
            return numberToWords(amount) + ' BYN';
        }
        // Получаем строку с суммой и извлекаем числовую часть
        function parseOrderTotal(orderTotalStr) {
            let numericPart = parseFloat(orderTotalStr.replace(' BYN', '').trim());
            return numericPart;
        }
        // Передаем значение через шаблонизатор и форматируем
        var orderTotalStr = "91.00 BYN";
        var numericTotal = parseOrderTotal(orderTotalStr);
        var formattedTotal = formatAmount(numericTotal);
        console.log(formattedTotal);
    знаки < > заменяются на &gt и скрипт не работает, как это можно исправить ?

Решение: можно создать js файл и подключить его в шаблоне

Еще один вариант решения: JS код нужно обрамлять тегами {literal}{/literal}, если код вставляется прямо в Smarty шаблон

1 лайк

Эта тема была автоматически закрыта через 12 часов после последнего ответа. В ней больше нельзя отвечать.