» »

[javascript] else if primer

[javascript] else if primer

kornilov ::

Imam 9 sklopov, na sliki sta prikazana samo dva sklopa, kjer sta spremenljivki "zdravje2" in "ljubezen2".
Spremenljivke so vezane na datum, njihova vrednost se dnevno spreminja in znaša med 0 in 5.002 .
1. Zanima me, kako bi se lahko skrajšalo ta čreva? :)
2. Če zadnji (else if) v vsakem sklopu spremenim v (else) zadeva ne deluje več! Zakaj?

if((zdravje2>=0)&&(zdravje2<1)) {
		document.write('<img id="a" src="wpimages/1.png">');
		}
		else if ((zdravje2>=1)&&(zdravje2<2)) {
		document.write('<img id="a" src="wpimages/2.png">');
		}
		else if ((zdravje2>=2)&&(zdravje2<3)) {
		document.write('<img id="a" src="wpimages/3.png">');
		}
		else if ((zdravje2>=3)&&(zdravje2<4)) {
		document.write('<img id="a" src="wpimages/4.png">');
		}
		else if((zdravje2>=4)&&(zdravje2<5.002)){
		document.write('<img id="a" src="wpimages/5.png">');
		} 
		document.write("<br/>");	
		
		
if((ljubezen2>=0)&&(ljubezen2<1)) {
		document.write('<img id="b" src="wpimages/1.png">');
		}
		else if ((ljubezen2>=1)&&(ljubezen2<2)) {
		document.write('<img id="b" src="wpimages/2.png">');
		}
		else if ((ljubezen2>=2)&&(ljubezen2<3)) {
		document.write('<img id="b" src="wpimages/3.png">');
		}
		else if ((ljubezen2>=3)&&(ljubezen2<4)) {
		document.write('<img id="b" src="wpimages/4.png">');
		}
		else if((ljubezen2>=4)&&(ljubezen2<5.002)){
		document.write('<img id="b" src="wpimages/5.png">');
		} 
		document.write("<br/>");
  • spremenilo: kornilov ()

Math Freak ::

Ali lahko zavzame vrednost 5.002 ?

Math Freak ::

Zakaj zmeraj pišeš pri else if >= 1, >= 2, itd. Odvisno kakšni so možni podatki: če se lahko negativna števila, potem lahko daš na začetku if ljubezen2 >=0 in ugnezdiš vse ostalo notri.

kornilov ::

Lahko, vendar sem opazil napako. Napisati bi moral
(zdravje2<=5.002)
ker sem predhodno delal z modulom %5.002. Zakaj delam napake, ker sem začetnik. :) Nimam negativnih števil.

Zgodovina sprememb…

  • spremenilo: kornilov ()

Math Freak ::

Delno se poenostavi tako:

if (zdravje2<1){
document.write('<img id="a" src="wpimages/1.png">');
}
else if (zdravje2<2) {
document.write('<img id="a" src="wpimages/2.png">');
}
else if (zdravje2<3) {
document.write('<img id="a" src="wpimages/3.png">');
}
else if zdravje2<4) {
document.write('<img id="a" src="wpimages/4.png">');
}
else if zdravje2=<5.002){
document.write('<img id="a" src="wpimages/5.png">');
} 
document.write("<br/>");  

Zgodovina sprememb…

kornilov ::

Hvala, to je bolje. Bi se dalo ta sklop napisati kot samostojno funkcijo? In kako bi to funkcijo klical?

Math Freak ::

Ali lahko zavzema vrednosti večje od 5.002. Če so dovoljene lahko namesto else if uporabiš else. Glede na to, da je besedilo konstantno, lahko še vse to v for zanko vržeš, pa boš imel zelo kompaktno.

kornilov ::

Vrednost je samo od 0 do 5.002. Sem imel v mislih for zanko, samo je ne izpeljem brez napak. :|

Math Freak ::

A je to programski jezik java ali kaj? Aja sj piše gor =p. Nvm.

Zgodovina sprememb…

kornilov ::

javascript .js

Math Freak ::

Hmm u javi nisem veliko delal. Verjetno najprej napišeš to kot metodo, ki nič ne vrača, daš notri parameter zdravje2 in ljubezen2 tipa decimalno število, in kličeš metodo v Mainu?

kornilov ::

Hvala za čas, Freaky. ;) Bi znal kdo spraviti to čudo v for ali kakšno drugo zanko?

if (zdravje2<1) {
        document.write('<img id="a" src="wpimages/1.png">');
        }
        else if (zdravje2<2) {
        document.write('<img id="a" src="wpimages/2.png">');
        }
        else if (zdravje2<3) {
        document.write('<img id="a" src="wpimages/3.png">');
        }
        else if (zdravje2<4) {
        document.write('<img id="a" src="wpimages/4.png">');
        }
        else if (zdravje2<=5.002) {
        document.write('<img id="a" src="wpimages/5.png">');
        }
        document.write("<br/>");

Math Freak ::

Npr:

    for (int i = 1; i <= 4; i++){
        if (zdravje2 < i && zdravje2 > i - 1){
            document.write("<img id='a' src='wpimages/" + i + ".png'>");
        }
    }
    if (zdravje2 > 4){
            document.write("<img id='a' src='wpimages/5.png'>");
    }

Zgodovina sprememb…

Math Freak ::

Če bi dal stvari, ki so večje od 5 v 6.png, potem bi bilo veliko lepše in manj kode. Samo narekovaje sem ti zamenju, ker meni ne prime tisti vrstni red ...

Zgodovina sprememb…

garamond ::

function update(parameter, id){
    var p = parameter;
    if((parameter>=0) && (parameter<=5.002)) {
        if((parameter>5.0) && (parameter<=5.002)) {
            p = 5;
        }
        document.write('<img id="' + id + '" src="wpimages/' + Math.ceil(p) + '.png">');
    }
}
update(zdravje2, "a");

- Za vrednosti točno 1.0, 2.0 itd se ta koda razlikuje od tvoje
- Uporabljen je Math.ceil, ki zaokroži število navzgor na celo število
- Mogoče uporabi jQuery da ne bo treba vedno pisat document.write
- V brskalniku vklopi developer tools in poglej, kakšne napake ti javi js
- Nisem testiral kode

@Math Freak: java != javascript ;)

Math Freak ::

Ok, vzeto na znanje. Večje ali enako sem pozabil: zdravje2 >= i - 1

Zgodovina sprememb…

lebdim ::

java pa javascript ni enako
sta dva različna jezika

kornilov ::

Perfektno deluje, hvala garamond, hvala Freaky, morda kdo predlaga kakšno angleško "praktično" literaturo o javscriptu in podobnem? JQuery? Da slišal sem že zanj. :)
function update(parameter, id){
    var p = parameter;
    if((parameter>=0) && (parameter<=5.002)) {
        if((parameter>5.0) && (parameter<=5.002)) {
            p = 5;
        }
        document.write('<img id="' + id + '" src="wpimages/' + Math.ceil(p) + '.png">'+'<br/>');
    }	// Math.ceil(): zaokroži navzgor na celo število
}

update(zdravje2, "a");
update(ljubezen2, "b");
..............

Zgodovina sprememb…

  • spremenilo: kornilov ()

Math Freak ::

@garamond

Zakaj si pa 2x preverju, če je parameter manjši ali enak od 5.002? Če ni manjši ali enak že tako ne bo prišel v drug pogojni stavek.

Zgodovina sprememb…

kornilov ::

V drugem stavku je preverjal vrednost med 5.0 in 5.002 in ji priredil vrednost p = 5. Če bi imel vrednost nad 5.0, bi drugače dobil vrednost npr. Math.ceil(5.002) = 6, kar bi bilo napačno.

Math.ceil(p)

Math Freak ::

Sj to štekam,

if(parameter<=5.002){
    if(parameter<=5.002){


Verjetno ni treba preverjat 2x isto zadevo, ali pač?

Zgodovina sprememb…

garamond ::

Math Freak, imaš popolnoma prav. V drugem if stavku tega ni treba več preverjati, ampak jaz sem verjetno prekopiral vrstico kode in samo spremenil številke :D

Za dobro literaturo pa ne vem (jaz itak ne poznam dobro javascript). Bo kdo drug povedal? Bi pa rekel da se splača naučiti zelo natančno od začetka in ko to znaš, pride na vrsto objektno programiranje, ki ga v js lahko narediš na desetine možnih načinov.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[javascript] return stavek

Oddelek: Programiranje
8946 (768) lebdim
»

C# (strani: 1 2 )

Oddelek: Programiranje
9711986 (8821) Ericssony
»

Masterpage in jQuery(ajax call)

Oddelek: Programiranje
61344 (1172) hatchette
»

Najlepše slovenske balade so??

Oddelek: Sedem umetnosti
2110633 (10215) boych
»

lepi verzi za poroko

Oddelek: Loža
98095 (7852) Zero

Več podobnih tem