如何防止我的“推送”将所有内容放入一个数组中?

时间:2018-07-05 11:03:04

标签: javascript jquery arrays json

我有输入字段,这些字段是根据JSON文件中的数组创建的。

但是,当我在输入字段中插入内容时,直到我开始在不属于其他输入字段的输入字段中插入内容之前,它一直正确。不用担心,接下来会有更多解释。

这是我的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"
  }
}

如您所见,我有多个名为syllables的数组。我正在尝试做的是:创建push,直到它到达JSON中的匹配数组为止,然后应将输入字段更改为按钮。但是,当我转到链接到第二个数组的下一个输入字段时,不是继续从0开始push,而是继续进行。

一张图片,让您明白我的意思(也请注意console.log())。

enter image description here

因此:与其让push重新开始,不如继续将其添加到已经存在的数组中。我希望不会发生这种情况,因此以后可以进行检查,检查push是否等于数组,然后将所有所需的输入字段分配给绿色按钮。

这是我的代码现在的样子:

var x = [];

function prepareCheck() {
  $.getJSON('json_files/jsonData_' + ID + '.json', function(json) {
    $(document).on('change', '.syl-input', function() {
      var rowCounter = $(this).parent().parent().parent().parent().attr('id');
      var inputCounter = $(this).attr('id');
      var jsyl = json.main_object.main_object.exercises[rowCounter].syllables[inputCounter];
      var jsylall = json.main_object.main_object.exercises[rowCounter].syllables;
      var valueInput = $(this).val();
      console.log(jsylall);
      if (valueInput == jsyl) {
        var correctInput = $('<input/>', {
          'class': 'form-control',
          'type': 'text',
          'id': 'button' + CBC++,
          'value': valueInput
        });
        console.log(jsyl);
        x.push(valueInput);

        if (valueInput == '') {
          x.remove($(this).val());
        };
        console.log(x);

        $(this).replaceWith(correctInput);
        S.playRight();
        S.addRight();
      } else if ($.inArray(valueInput, jsylall) >= -1) {
        $(this).css({
          'color': '#e00413'
        });
        S.playWrong();
        S.addWrong();
      }

    });
  });
}

问题:如何再次重置x.push?因此我可以继续检查输入字段是否具有所需的单词/长度以将其更改为绿色按钮?

0 个答案:

没有答案