为什么我只能获得数组的第一部分?

时间:2018-05-09 17:37:10

标签: jquery html

编辑:我原来的问题太模糊,包含太多子问题。我已经编辑了原文,专注于更直接的问题。

我通过AJAX将名称列表加载到我的jquery代码中的空数组中。我可以让列表中的第一个出现,但在此之后没有任何内容出现。我运行了一个测试,只有前两个名字出现在我的屏幕上,但是在第一个名字之后我没有得到任何东西,而Firefox并没有向我显示任何错误。我真的很感激任何帮助。

.html代码:

<form id="memberNames">
  <label>Member #:</label>
  <select class="idNum">
  </select>
  <label>Member Name:</label>
  <span class="idName" num="0"></span>
  <label>Member #:</label>
  <select class="idNum">
  </select>
  <label>Member Name:</label>
  <span class="idName" num="1"></span>

.js代码:

  var memList = new Array ();

  // This code produces the Member #'s in the select tag
  for (var i = 200; i <= 299; i++) {
    $(".idNum").append("<option>" + i + "</option>");
    }

  $.ajax({
    mimeType: 'text/plain; charset=x-user-defined',
    url:"memName.txt",
    type: "GET",
    dataType: "text",
    success: function (data) {
      memList = data.split("\n");
      for (var m = 0; m <= memList.length; m++) {
        return $('.idName[num="' + m + '"]').html('<input type="text" name="memberName" value=' + memList[m] + '>');
        }
      }
    });

.txt文件:

  

---
  约翰D.   简D.   詹姆斯B.
  米奇M.
  等...

2 个答案:

答案 0 :(得分:0)

我认为你有一些问题,但在飞行中测试有点困难,所以请原谅我,如果这不是100%准确的话。希望它会让你走上正确的道路。

首先,您要对"\n"的字符文字进行拆分,这意味着它会在您的文字中寻找\n。如果您希望它找到\n,您的文本文件应该看起来像John D.\nJane D.\nJames B.\nMickey M.。另一方面,如果你想让它找到一个新的行字符,你应该在/\n/的正则表面上进行拆分(参见this Q&A)。

接下来,您可能会在AJAX函数之外初始化memList变量时遇到问题(请参阅this A from the same Q)。

我建议尝试一种解决方案,然后另一种解决方案,如果它们都不能单独使用,也可以一起尝试。

最糟糕的情况是,您可以在成功函数中使用代码中的断点(如果您使用Chrome,则可以在任何行上键入debugger;,它会自动创建断点在你的代码到达那一行时)。然后你可以使用&#39;控制台&#39;使用您返回的值data来查看您从通话中获得的内容并尝试将其切成阵列。

祝你好运!

答案 1 :(得分:0)

我只是在乱搞的时候偶然修好了它!

在我的原始代码中,我有这个:

for (var m = 0; m <= memList.length; m++) {
  return $('.idName[num="' + m + '"]').html('<input type="text" name="memberName" value=' + memList[m] + '>');
  }

事实证明,return并不需要在那里,并且循环的第二个参数需要小于不可能等于长度。所以现在的代码是:

for (var m = 0; m < memList.length; m++) {
  $('.idName[num="' + m + '"]').html('<input type="text" name="memberName" value=' + memList[m] + '>');
  }