switch

0

Hej
Mam dwie zmienne i chce aby kazda pojawiala sie z innym div z pewnymi warunkami.

a=5
b=10
var yA='piec';
var yB='dziesiec';

switch (true) {
	case ((a >= 7)&&(b>=7) :
		document.getElementById('a').innerHTML = a + yA;
		document.getElementById(b').innerHTML = b + yB;
		document.getElementById('a_').innerHTML = '***';
		document.getElementById('b_').innerHTML = '***';
		break;
	case ((a >= 4)&&(b>=4)):
		document.getElementById('a').innerHTML = a + yA;
		document.getElementById('b').innerHTML = b + yB;
		document.getElementById('a_').innerHTML = '**';
		document.getElementById('b_').innerHTML = '**';
		break;
	default:
		document.getElementById('a').innerHTML = a;
	        document.getElementById('b').innerHTML = b;
		document.getElementById('a_').innerHTML = '*';
		document.getElementById('b_').innerHTML = '*';	
}

W normalnym if'ie też nie potrafie zrobic z tymi podwojnymi warunkami, ani z && ani z || nie dziala.
Prosze o nakierowanie mnie.

0
gohangbr napisał(a):

Hej
Mam dwie zmienne i chce aby kazda pojawiala sie z innym div z pewnymi warunkami.

a=5;
b=10;
var yA='piec';
var yB='dziesiec';

switch (true) {
	case ((a >= 7)&&(b>=7)) :
		document.getElementById('a').innerHTML = a + yA;
		document.getElementById('b').innerHTML = b + yB;
		document.getElementById('a_').innerHTML = '***';
		document.getElementById('b_').innerHTML = '***';
		break;
	case ((a >= 4)&&(b>=4)):
		document.getElementById('a').innerHTML = a + yA;
		document.getElementById('b').innerHTML = b + yB;
		document.getElementById('a_').innerHTML = '**';
		document.getElementById('b_').innerHTML = '**';
		break;
	default:
		document.getElementById('a').innerHTML = a;
	        document.getElementById('b').innerHTML = b;
		document.getElementById('a_').innerHTML = '*';
		document.getElementById('b_').innerHTML = '*';	
}

W normalnym if'ie też nie potrafie zrobic z tymi podwojnymi warunkami, ani z && ani z || nie dziala.
Prosze o nakierowanie mnie.

dziala jedynie w taki sposob... :

a=5;
b=10;
function cos() {
		if(a >= 7) {
			document.getElementById('a').innerHTML = a + yA;
			document.getElementById('a_').innerHTML = '***'
		}
		else if(a >= 4) {
                        document.getElementById('a').innerHTML = a + yA;
			document.getElementById('a_').innerHTML = '**'
		}
		
		if(b >= 7) {
			document.getElementById('b').innerHTML = b + yB;
			document.getElementById('b_').innerHTML = '***'
		}
		else if(b >= 4) {
			document.getElementById('b').innerHTML = b + yB;
			document.getElementById('b_').innerHTML = '**'
		}
		
		else {
			document.getElementById('a').innerHTML = a;
			document.getElementById('a_').innerHTML = '*'
			document.getElementById('b').innerHTML = b;
			document.getElementById('b_').innerHTML = '*'
		}
	}
	cos();
1

Ale coś ty tu natworzył? Switch / case działa tak:

switch (liczba) {
    case 0:
        alert("zero");
    case 1:
        alert("jeden");
    case 2:
        alert("dwa");
    case 3:
        alert("trzy");
}

Poza tym w pierwszym warunku masz skaszanioną liczbę nawiasów:

((a >= 7)&&(b>=7) 
0
Freja Draco napisał(a):

Ale coś ty tu natworzył? Switch / case działa tak:

switch (liczba) {
    case 0:
        alert("zero");
    case 1:
        alert("jeden");
    case 2:
        alert("dwa");
    case 3:
        alert("trzy");
}

Poza tym w pierwszym warunku masz skaszanioną liczbę nawiasów:

((a >= 7)&&(b>=7) 

juz poprawione.
Ale dalej nie dziala. Problem chyba tkwi ze mam w warunku rozne divy... oraz jezeli np. b jest wieksze (bo jest) to przy nim wyswietlaja sie 3 gwiazdki oraz przy a również 3 gwiazdki (a powinny dwie).

1

Nie dzialalo bo musisz oddzielnie kazdego ifa dla kazdej zmiennej pisac... tutaj masz przyklad jak mozna to zrobic: funkcja 'range' bedzie sprawdzala czy liczba znajduje sie w danym przedziale, a nastepnie twoja funkcje 'cos' ktora ma za zadanie wyrenderowac okreslone wartosci w zaleznosci od warunkow ktore sobie wymyslisz

function range(num, min, max) {
  if (max && min &&  num <= max && num >= min) {
    return true
  } else if (!max && num>=min) {
    return true
  } else if (!min && num<=max) {
    return true
  } else {
    return false
  }
}

function cos(num, divId){
  if (range(num, 7)){
    document.getElementById(divId).innerHTML = num;
    document.getElementById(divId + '_').innerHTML = '***';
  } else if (range(num, 4, 6)){
    document.getElementById(divId).innerHTML = num;
    document.getElementById(divId + '_').innerHTML = '**';
  } else {
    document.getElementById(divId).innerHTML = num;
    document.getElementById(divId + '_').innerHTML = '*';
  }
}

var a=4;
var b=8;

cos (a, 'a'); // 4 **
cos (b, 'b'); // 8 ***

@Edit: link do przykladu https://codepen.io/anon/pen/dqvjVo

0

Dzięki !

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