Nazwa zmiennej ze zmienną

Odpowiedz Nowy wątek
2019-04-12 10:53
0

Witam,
mam taki kawałek kodu i nie wiem jak zrobić, aby nazwa zmiennej to była cenanowa i numer np.: cenanowa5.

let cenanowa+numer =  iloscInt * cenastaraFloat;

Pozostało 580 znaków

2019-04-12 12:31
1

A jak myślisz - czemu blokuje przeglądarkę?
Masz podany warunek, który warunkuje opuszczenie pętli. Ale żadna z dwóch zmiennych podanych w warunku nie zmienia się w trakcie działania pętli, więc warunek nigdy się nie zmieni, w związku z czym pętla się albo nigdy nie wykona, albo będzie mielić w nieskończoność :P


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say

Pozostało 580 znaków

2019-04-12 12:34
0

Heh faktycznie. Zauważyłem, że to skleja te wartości, a jak zrobić, aby indexowało?

nie do końca rozumiem, co chcesz osiągnąć. Napisz obszerniej, co chcesz zrobić, to pewnie coś wymyślimy ;) - cerrato 2019-04-12 12:37

Pozostało 580 znaków

2019-04-12 12:43
0

No chcę, aby co każde okrążenie pętli do tablicy ceny dopisywała się wartość cenastara, ale właśnie zauważyłem, że ta pętla nie jest potrzebna, bo mam tę pierwszą dużą) i chcę, aby co każde jej okrążenie do tablicy ceny dopisywał się nowy index z wartością cenastara.

Jeszcze raz kod: (uaktualniony):

let numer = 0;

function ilosc()
{
    document.getElementById('dalej').style.display="block";

    let rekordy = [...document.querySelectorAll('.wiersz')].length;

            while(numer < rekordy)
            {
                    let cenastara = document.getElementById('cenatab'+numer).innerHTML;
                    let inputilosc = document.getElementById('ilosc'+numer);
                    let ilosc = document.getElementById('ilosc'+numer).value;

                    let iloscInt = parseInt(ilosc);
                    let cenastaraFloat = parseFloat(cenastara);

                    let cenanowa = iloscInt * cenastaraFloat;   

                    let ceny = [cenastara];
                    let numerceny = 0;
                    ceny = ceny + cenastara;

                    console.log(ceny);

                    cenanowa = Math.round(cenanowa * 100) / 100;
                    document.getElementById('cenatab'+numer).innerHTML = cenanowa;

                    let numerek = 0;
                    let cenarazem = 0;
                    while(numerek < rekordy)
                    {
                        let razem = document.getElementById('cenatab'+numerek).innerHTML;
                        let razemInt = parseFloat(razem)
                        cenarazem = cenarazem + razemInt;
                        let cenarazemokragla = Math.round(cenarazem * 100) / 100;

                        document.getElementById('razem').style.display='block';
                        document.getElementById('razem').innerHTML = cenarazemokragla;

                        numerek++;
                    }

                    if(document.getElementById('razem').innerHTML != razemspr)
                    {
                        alert("Wystąpił błąd podczas sprawdzania poprawności formularza. Spróbuj ponownie.");
                        header("location: podsumowanie.php");
                    }

                    numer++;

            };
}
Btw, w JSie nie ma funkcji header (linijka 47) - wykorzystaj window.location. - Patryk27 2019-04-12 12:44
Z php pomyliłem. - Gouda105 2019-04-12 12:45

Pozostało 580 znaków

2019-04-12 12:54
1
Gouda105 napisał(a):

Witam,
mam taki kawałek kodu i nie wiem jak zrobić, aby nazwa zmiennej to była cenanowa i numer np.: cenanowa5.

let cenanowa+numer =  iloscInt * cenastaraFloat;

Użyj tablicy:
cenanowa[x]
zmienne["cenanowa"+x]
czy jak tam chcesz.


No już to zrobiłem ;) Na dole jest kod i problem. - Gouda105 2019-04-12 12:55
Kilka postów wyżej napisałem coś bardzo podobnego - https://4programmers.net/Forum/1583259 - cerrato 2019-04-12 12:55

Pozostało 580 znaków

2019-04-12 12:57
0

@Patryk27: metoda cerrato wydaje mi się łatwiejsza, więc chyba ją wykorzystam.

Pozostało 580 znaków

2019-04-12 13:03
1

I wpadłem na pomysł czegoś takiego:

let numerceny = 0;
                        let ceny = [];
                        ceny[numerceny] = cenastara;
                        numerceny++;
                        console.log(ceny);

Aby w tablicy mieć ceny

Pozostało 580 znaków

2019-04-12 13:10
1

Pomysł jest z grubsza OK.
Ale - jeśli chcesz to zrobić porządnie, to może weź to opakuj w jakiś obiekt, który będzie kontrolować operacje zapisu/odczytu. Obecnie możesz sobie strzelić w stopę - chociażby próbować odczytać coś, czego nie ma, albo przypadkowo nadpisać jakąś wartość. Z kolei pisanie w każdym miejscu kodu sprawdzającego i kontrolującego zapis/odczyt jest bez sensu. Lepiej zrobić jakiś obiekt i umieścić w nim gettery/settery, a następnie obsługiwać go za pomocą tych metod. Tak na szybko możesz rzucić okiem tutaj - https://forum.pasja-informaty[...]cript-gettery-i-settery-po-co , może zrozumiesz o co mi chodzi.


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say
edytowany 2x, ostatnio: cerrato, 2019-04-12 13:14

Pozostało 580 znaków

2019-04-12 14:26
0

Wiem, że to nieprofesjonalne, ale czy da się zrobić, aby dodawać następny index z wartością cenastara do tablicy?

let ceny= [];
ceny[numer] = cenastara

console.log(ceny);
numer++;

Bo pokazuje:

Array [ "99.99" ]
Array [ <1 empty slot>, "120.99" ]

edytowany 2x, ostatnio: Gouda105, 2019-04-12 14:35

Pozostało 580 znaków

2019-04-12 14:46
0

Nie wiem, czy dobrze zrozumiałem Twoje pytanie, ale podejrzewam że chodzi Ci o tablicę dwuwymiarową. Jeśli tak, to rzuć okiem na https://rafalskowron.pl/2018/[...]lice-dwuwymiarowa-javascript/ LUB https://kursjs.pl/kurs/super-podstawy/tablice.php
Ewentualnie coś z naszego portalu - Deklarowanie tablic wielowymiarowych


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say
edytowany 2x, ostatnio: cerrato, 2019-04-12 14:47

Pozostało 580 znaków

2019-04-12 14:53
0

Nie, chodzi o to, aby dodawało indexy tablicy i wstawiało do nich wartosc cenastara(aktualizuje się co każde okrążenie pętli).

Cały kod:

let numer = 0;

function ilosc()
{
    document.getElementById('dalej').style.display="block";

    let rekordy = [...document.querySelectorAll('.wiersz')].length;

            while(numer < rekordy)
            {
                    //Pobieranie wartości podstawowej cen
                    let cenastara = document.getElementById('cenatab'+numer).innerHTML;
                    let ilosc = document.getElementById('ilosc'+numer).value;

                    //Formatowanie na liczby i łączenie w wynik
                    let iloscInt = parseInt(ilosc);
                    let cenastaraFloat = parseFloat(cenastara);
                    let cenanowa = iloscInt * cenastaraFloat;                       

                    //Zaokrąglanie ceny i przypisanie jej do odpowiedniego diva
                    cenanowa = Math.round(cenanowa * 100) / 100;
                    document.getElementById('cenatab'+numer).innerHTML = cenanowa;

                    //Sumowanie cen i włożenie ich do diva razem
                    let numerek = 0;
                    let cenarazem = 0;
                    while(numerek < rekordy)
                    {
                        let razem = document.getElementById('cenatab'+numerek).innerHTML;
                        let razemInt = parseFloat(razem)
                        cenarazem = cenarazem + razemInt;
                        let cenarazemokragla = Math.round(cenarazem * 100) / 100;
                        document.getElementById('razem').style.display='block';
                        document.getElementById('razem').innerHTML = cenarazemokragla;

                        numerek++;
                    }

                    //Tworzenie tablicy z podstawowymi cenami
                    let ceny= [];
                    ceny[numer] = cenastara;

                    //
                    console.log(ceny);
                    numer++;

            };

}

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0