Comment créer une boucle pour voir si la ligne désirée avec les entrées est remplie correctement

à quoi ressemble mon JSON:

{ "main_object": { "id": "5", "getExerciseTitle": "TestFor", "language": "nl_NL", "application": "lettergrepen", "main_object": { "title": "TestFor", "language": "nl_NL", "exercises": [ { "word": "test", "syllables": [ "test01", "test02", "test03", "" ] }, { "word": "tesst", "syllables": [ "test11", "test12", "", "" ] } ] }, "dataType": "json" } } 

à quoi ressemble ma fonction:

 function prepareCheck() { $.getJSON('json_files/jsonData_' + ID + '.json', function(json) { $(document).on('input', '.syl-input', function() { var $wordContainer = $(this).closest('.exerciseWord'), wordIndex = $('.exerciseWord').index($wordContainer); var valuesArray = $wordContainer.find('.syl-input').map(function() { return this.value }).get() var syllablesArray = json.main_object.main_object.exercises[wordIndex].syllables; console.log(syllablesArray); var isValid = valuesArray.every(function(val, i) { return syllablesArray[i] === val; }); $wordContainer.toggleClass('valid', isValid) }); }); } }); } 

Ce que j’essaie de réaliser, mais je ne sais pas comment:

Je voudrais créer une boucle qui passera par les syllabes pour chaque word désiré. word “test” a 3 syllables et sur mon interface il affiche 3 champs de saisie pour le word souhaité qui doit être rempli correctement. Cependant, comment puis-je parcourir mes syllables et créer cela lorsque toutes les syllables du word souhaité sont remplies, elles doivent toutes être transformées en boutons verts. Les syllables désirées ne doivent se transformer en boutons verts que lorsque je les remplis correctement. Donc, pour mon premier word les 3 champs de saisie doivent passer aux boutons verts lorsque j’insère avec succès “test01”, “test02”, “test03” et pour mon deuxième word il convient de transformer les 2 champs de saisie en boutons verts lorsque je les remplis correctement . Ils doivent cependant restr des champs de saisie tant que tous les champs de saisie désirés d’un word sont pas renseignés correctement.

La méthode suivante utilise Array#every() pour parcourir un tableau des valeurs des entrées associées à chaque mot et les faire correspondre aux données de ce mot.

Utilise également jQuery index() du conteneur de mots parent pour obtenir les données appropriées à comparer

 $(document).on('input', '.syl', function() { var $wordContainer = $(this).closest('.word'), wordIndex = $('.word').index($wordContainer); var valuesArray = $wordContainer.find('.syl').map(function() { return this.value }).get() var syllablesArray = data.main_object.main_object.exercises[wordIndex].syllables var isValid = valuesArray.every(function(val, i) { return syllablesArray[i] === val; }); $wordContainer.toggleClass('valid', isValid) }) 
 .word.valid .syl { background: yellow }