• 05-04-2025, 03:50:48
    #1
    Merhabalar ben number input var burda js ile otomatik inputlar doluyor miktar artıkça otomatik satır toplamı artıyor ama ara toplam kısmı var burda veri satır toplamdan silip ekleyince aktif hale geliyor. kodda sorunlar var çözemedim yanlış hesaplama yapıyor.Bu Konuda yardımcı olabilir misin? Ödev yapamadım Yapay zekadanda yardım olmadı.

    <script>
    document.addEventListener("DOMContentLoaded", function () {
        // 'toplam-fiyati' inputlarının değişikliklerini takip et
        const toplamFiyatiInputs = document.querySelectorAll("input[name='toplam-fiyati']");
        toplamFiyatiInputs.forEach(input => {
            input.addEventListener('input', function () {
                hesaplaAraToplam(); // Ara toplamı güncelle
                hesaplaGenelToplam(); // Genel toplamı güncelle
            });
        });
        // Toplu iskonto inputu için değişim kontrolü
        const discountValueInput = document.getElementById("discountValue"); // İskonto değeri inputu
        if (discountValueInput) {
            discountValueInput.addEventListener('input', function () {
                hesaplaAraToplam(); // Ara toplamı güncelle
                hesaplaGenelToplam(); // Genel toplamı güncelle
            });
        }
        // Para birimi seçimini dinle
        const paraBirimiRadyolar = document.querySelectorAll('input[name="para"]');
        paraBirimiRadyolar.forEach(radio => {
            radio.addEventListener('change', function() {
                hesaplaAraToplam();
                hesaplaGenelToplam();
            });
        });
        // Ara toplamı hesapla ve görüntüle
        function hesaplaAraToplam() {
            let araToplam = 0;
            // Tüm toplam-fiyati inputlarının değerlerini al ve toplama ekle
            toplamFiyatiInputs.forEach(function (input) {
                // Sayısal değeri al (binlik ayraçları dahil etme)
                let value = parseFloat(input.value.replace(/[^0-9.-]+/g, "")); // Binlik ayraçları temizle
                araToplam += isNaN(value) ? 0 : value;
            });
            const selectedCurrency = document.querySelector('input[name="para"]:checked').value;
            let symbol = selectedCurrency === "TL" ? "₺" : selectedCurrency === "USD" ? "$" : "€";
            // Ara toplamı span içinde görüntüle
            const araToplamSpan = document.querySelector(".ara-toplam");
            if (araToplamSpan) {
                araToplamSpan.textContent = araToplam.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + symbol;
            }
        }
        // Genel toplamı hesapla ve görüntüle
        function hesaplaGenelToplam() {
            const araToplamSpan = document.querySelector(".ara-toplam");
            let araToplam = 0;
            if (araToplamSpan && araToplamSpan.textContent) {
                araToplam = parseFloat(araToplamSpan.textContent.replace(/[^0-9.-]+/g, "")) || 0;
            }
            const discountValueInput = document.getElementById("discountValue");
            let iskontoDeger = 0;
            if (discountValueInput && discountValueInput.value) {
                iskontoDeger = parseFloat(discountValueInput.value.replace(/[^0-9.-]+/g, "")) || 0;
            }
            const discountTypeSelect = document.getElementById("discountType");
            const iskontoTuru = discountTypeSelect ? discountTypeSelect.value : "%";
            let indirimMiktari = 0;
            const selectedCurrency = document.querySelector('input[name="para"]:checked').value;
            let symbol = selectedCurrency === "TL" ? "₺" : selectedCurrency === "USD" ? "$" : "€";
            // İskonto türüne göre işlem ve indirim miktarını hesapla
            if (iskontoDeger > 0) {
                document.getElementById("topluIskontoGoster").style.display = "block";
                if (iskontoTuru === "%") {
                    if (iskontoDeger > 100) {
                        if (discountValueInput) {
                            discountValueInput.value = 100;
                        }
                        iskontoDeger = 100;
                    }
                    indirimMiktari = (araToplam * iskontoDeger) / 100;
                    document.getElementById("topluIskontoDeger").textContent = "(%" + iskontoDeger + ") - " + indirimMiktari.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + symbol;
                } else if (iskontoTuru === "birim") {
                    indirimMiktari = iskontoDeger;
                    document.getElementById("topluIskontoDeger").textContent = "(" + iskontoDeger.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + symbol + ") - " + indirimMiktari.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + symbol;
                }
            } else {
                document.getElementById("topluIskontoDeger").textContent = "";
                document.getElementById("topluIskontoGoster").style.display = "none";
                indirimMiktari = 0; // İskonto yoksa indirim miktarı sıfır olmalı
            }
            // Genel toplamı hesapla (ara toplamdan indirimi çıkar)
            let genelToplam = araToplam - indirimMiktari;
            genelToplam = genelToplam < 0 ? 0 : genelToplam;
            // Genel toplamı span içinde güncelle
            const genelToplamSpan = document.getElementById("genel-toplam");
            if (genelToplamSpan) {
                genelToplamSpan.textContent = genelToplam.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + symbol;
            }
        }
        // Sayfa yüklendiğinde ilk hesaplamaları yap
        hesaplaAraToplam();
        hesaplaGenelToplam();
    });
    </script>
  • 05-04-2025, 04:15:24
    #2
    Hocam bana

    Sorun: xxx

    İstediğim: xxx

    Yazın

    Yapay zekaya cözdureyim