Javascript loop

$(document).ready(function() {

var $data={
"pitanje":[
 {"id":1,"naziv":'Kako se zove najveci bruger',"odgovori": [{"id":"1", "ime":"burger1","tip":"netacno"},{"id":"2", "ime":"burger2","tip":"netacno"},{"id":"3", "ime":"burger3","tip":"tacno"}]},
 {"id":2,"naziv":'Kako se zove najveci bruger king',"odgovori": [{"id":"1", "ime":"burger1","tip":"netacno"},{"id":"2", "ime":"burger2","tip":"netacno"},{"id":"3", "ime":"burger3","tip":"tacno"}],}

]};

for (var i=0 ; i<$data.pitanje.length;i++) {

   	   $("#kviz").append("<div class='pitanje'><h1>"+ $data.pitanje[i]['naziv']+ "</h1></div>");

for (var x =0; x<$data.pitanje[i][‘odgovori’].length;x++) {

   $(".pitanje").append("<li><div id=1>"+ $data.pitanje[i]['odgovori'][x]['ime'] +"</div></li>");

};
};})


OUTPUT

Kako se zove najveci bruger

burger1
burger2
burger3
burger1
burger2
burger3
Kako se zove najveci bruger king

burger1
burger2
burger3

NE SHVATAM ZASTO MI SE U PRVOM DELU DVA PUTA ISPISUJU ISTI ODGOVORI ? DA LI NEKO ZNA MOZDA? HVALA

Koliko se meni cini ti radis iteraciju oba objekta koja se nalaze u pitanje arrayu, tako da ti prvi loop ispise rezultate iz oba objekta.

Probaj promijeniti nazive u drugom objektu pa vidi.

Na mobitelu sam, kod je uzasno indentovan daj neki jsfiddle.

Meni se čini da je sve dobro u gornjem code.u. Ali kada vidim kako je taj code iskopiran ovdje na forum, pitam se što se izgubilo putem?

Pa šta je ovo gore? Djelove code-a nisi warp-ao u code tag, pa djelove opet jesi…pa nisi …pa jesii…
…što for petlje ne spadaju u code ili? :slight_smile:

Bilo bi dobro da uzmeš code u komadu i kopiraš ga ovdje, sve fino označiš kao code…pa se onda greška možda ukaže.

Btw. nekako pretpostavljam da imaš još nekih stvarčica u tim petljama koje ti rade pomutnju. Tipa, možda dok nešto izvršavaš unutar tih petlji nehotice resetiraš “x” na nulu…pa ti se onda ponavlja krug petlje. Al to si se dobro onda potrudio da ne uđeš u infinity loop.

Da li sigurno ovaj $data izgleda kao što si ga gore natipkao? Ili si to odokativno natipkao za forum…a pravi ima dupli set podataka?

Btw.2.
-u drugom pitanju imaš jedan višak zarez nakon atributa odgovori. Ne vjerujem da to stvara ovaj problem…ali nekada su browseri vrištali error na taj zarez.
“tacno”}]>>>>,<<<<}

Ovaj zarez si dobro uocio.

Inace meni je JS Linter bacao exception na istu stvar, tako da bi i to moglo stvarati problem.

Zato sto sve odgovore appendas na element sa istom klasom.
Probaj ovako:

<script>
	$(document).ready(function () {
		var data = {
			"pitanje":[
				{
					"id": 1,
					"class": "burger",
					"naziv": 'Kako se zove najveci bruger',
					"odgovori":
						[
							{
								"id": "1",
								"ime": "burger1",
								"tip": "netacno"
							},
							{
								"id": "2",
								"ime": "burger2",
								"tip": "netacno"
							},
							{
								"id": "3",
								"ime": "burger3",
								"tip": "tacno"
							}
						]
				},
				{
					"id": 2,
					"class": "burgerking",
					"naziv": 'Kako se zove najveci bruger king',
					"odgovori":
						[
							{
								"id": "1",
								"ime": "burgerking1",
								"tip": "netacno"
							},
							{
								"id": "2",
								"ime": "burgerking2",
								"tip": "netacno"
							},
							{
								"id": "3",
								"ime": "burgerking3",
								"tip": "tacno"
							}
						]
				}]
		};
		$(data.pitanje).each(function(i, el) {
			$("#kviz").append("<div class='pitanje " + el.class + "'><h1>" + el.naziv + "</h1></div>");
			var odgovori = el.odgovori;
			$(el.odgovori).each(function(io, elo) {
				$(".pitanje." + el.class).append("<li><div id=1>" + elo.ime + "</div></li>");
			});
		});
	})
</script>

pa ces vidjeti dali ti odgovara.

Samo mala napomena.

.each() koji dolazi u paketu sa jQuery-om se dosta sporije izvrasava od nativnog for loop-a.

https://jsperf.com/browser-diet-jquery-each-vs-for-loop

Mozda njemu nije bitan, ali u nekom okruzenju gdje su performanse vazne zna biti od znacaja (u zavisnosti od kolicine podataka koji se iteriraju, pa do broja samih petlji itd itd).

1 Like

Copyright © 2022 WM Forum - AboutContact