Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: JavaScript: Valitun arrayn tulostus

prinsessaruusunen [30.12.2020 04:09:12]

#

Käyttäjän tarkoitus syöttää juomia array listaan, hintoineen ja määrineen. Ja syöttämällä sarjanumero voidaan hakea juoma jolloin tulostuu juoman syötteiden lisäksi litrahinta.

En kysy parempaa tapaa, vaan jos tällä tapaa tekee haluaisin tietää mikä menee mönkään? Jos viitsit niin väännäppä vielä rautalangasta mitkä kaikki on tässä perustavanlaatusia virheitä?

function Juoma(sarjanumero, hinta, maara ){
    this.sarjanumero= "";
    this.hinta= "";
    this.maara= "";
    this.tulosta = function() {
    return "sarjanumero: " + this.sarjanumero + "hinta" + this.hinta++ "maara: " + this.maara;
}}

let juomat = [];
function Lisaa(){
    sarjanumero= Number(document.getElementById("sarjanumero").value);
    hinta= Number(document.getElementById("hinta").value);
    pintaAla= Number(document.getElementById("pintaAla").value);

let juoma = new Juoma(sarjanumero, hinta, maara);
juomat.push(juoma);
}

function LitraHinta(){
    this.LitraHinta=this.hinta/this.maara;
    return this.LitraHinta
}

function haeJuoma(){
    let tulostus= "";
        for (var a=0;a<juomat.length; a++){
        if (juomat[a].sarjanumero ===Number(document.getElementById("sarjanumeroHaku").value )){
        tulostus +=juomat.toString();
        document.getElementById("tulostusAlue").innerHTML=tulostus +this.LitraHinta;
    }

The Alchemist [30.12.2020 04:20:09]

#

Ei vaan sinä kerrot meille, mikä tuossa menee mönkään, ja josset osaa korjata, niin sitten voit kysyä apua siihen.

Taas kerran käyttäjä (sinä) on postannut tänne vaillinaisen koodin, jota me emme voi itse edes suorittaa, koska se ei ole toimiva kokonaisuus. Joten sinä ajat sen kokonaisen koodin, otat virheet talteen, ja raportoit ne meille analysoitavaksi. Tai mielellään teet sen itse, koska sitähän koodaaminen on.

Kurssillasi on varmasti opetettu, kuinka saat selaimen virhekonsolin auki ja suorituksen aikana kohdatut virheet esille...

Teuro [30.12.2020 09:35:38]

#

Joo kyllä avunpyynnön lisäksi pitäisi saada selkeät virheilmoitukset. Ihan selvää on kuitenkin, ettei pinta-ala voi liittyä tähän tehtävään mitenkään. Hämäävästi myös muuttujat 'maara' ja 'pintaAla' menevät koodissa sekaisin. Ainakin nuo kannattaa korjata heti alkumetreillä.

Toisaalta javascriptillä voidaan luoda eheitä luokkia, joiden sisään voi kääriä tarvittavat funktiot. Tässä siis esimerkiksi funktio 'Litrahinta()' toimii väärin. Voisit muuttaa kyseisen osan koodista esimerkiksi näin.

class Juoma {
  constructor(sarjanumero, hinta, maara) {
    this.sarjanumero = sarjanumero;
    this.hinta = hinta;
    this.maara = maara;
  }

  tulosta() {

  }

  litrahinta() {

  }
}

Nyt oliota ja siihen liittyviä funktioita voidaan käyttää muualla osaa koodia helposti.

haeJuoma funktiossa taasen viitataan silmukan sisällä juomat[a]-muuttujan asemasta this-sanalla, joka on väärin. Lisäksi käytetään toString-funktiota, jota ei kuitenkaan ole määritelty. Lopuksi halutaan käyttää Litrahinta-funktiota, mutta sulkeet ovat unohtuneet.

Korjattavaa on siis toisaalta aika paljon noin lyhyeksi koodiksi, mutta toisaalta korjaukset ovat pääosin aika helposti toteutettavia.

prinsessaruusunen [30.12.2020 09:51:30]

#

Anteeksi teen paremman postauksen paremmalla ajalla

The Alchemist [31.12.2020 06:15:33]

#

Teuro kirjoitti:

Lisäksi käytetään toString-funktiota, jota ei kuitenkaan ole määritelty.

Kaikilla olioilla on olemassa metodi toString(), joka harvoin tosin tuottaa mitään merkityksellistä tulostetta. Taulukon kohdalla se palauttaa kehnosti muotoillun listan taulukon alkioista.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta