Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For循环从不执行(Javascript/Jquery)_Javascript_Jquery_For Loop - Fatal编程技术网

For循环从不执行(Javascript/Jquery)

For循环从不执行(Javascript/Jquery),javascript,jquery,for-loop,Javascript,Jquery,For Loop,因此,如果我将$.get('/preced_替换为_an.txt',函数(data){var ans=data.split('\n')}),for循环将运行使用ans=[“filler”,“more filler”]但是当$.get行在其中时,它拒绝执行for循环,并且从未向控制台写入任何内容。对于上下文,我正在编写代码,告诉您是否应该在单词前使用A或A。您使用for的单词都在preced\u with\u an.txt中的单独行中,我已检查了$.get函数,文件已写入数组 $(document

因此,如果我将
$.get('/preced_替换为_an.txt',函数(data){var ans=data.split('\n')}),for循环将运行
使用
ans=[“filler”,“more filler”]
但是当$.get行在其中时,它拒绝执行for循环,并且从未向控制台写入任何内容。对于上下文,我正在编写代码,告诉您是否应该在单词前使用A或A。您使用for的单词都在
preced\u with\u an.txt
中的单独行中,我已检查了$.get函数,文件已写入数组

$(document).on('input',$('#givenWord'),function(){
      var ans = new Array;
      $.get('/preceed_with_an.txt', function(data){var ans = data.split('\n')});  
 for (var i = 0; i < ans.length; i++){
    console.log("help");
    if (ans[i] == $('#givenWord').lower){
      var answer = $("#answer");
      console.log("AN");
      $(answer).text("An");
      break;
    }else{
      var answer = $("#answer");
      console.log("A")
      $(answer).text("A");
    }
  }
});
$(文档).on('input',$('givenWord'),function(){
var-ans=新数组;
$.get('/preced_with_an.txt',函数(data){var ans=data.split('\n')});
对于(变量i=0;i
get()是异步的,因此ans.length等于零,因为数据在for循环执行后返回

您必须在
get()
回调函数中执行
for
循环:

$.get(url, function(data) {
   var arr = data.split(',');
   for(...) {
      //...
   }
});
执行流(您的代码)

  • 创建ans数组
  • 调用
    get()
    函数
  • 尝试执行
    for
    循环(无可用数据)
  • get()
    返回数据
  • 异步调用

  • 创建ans数组
  • 使用回调中的
    for
    循环调用
    get()
    函数
  • get()
  • 示例

    检查控制台中的结果。即使在console.log()之前调用setTimeout函数,代码也会继续执行并等待回调的响应(1秒后)。结果出来时,执行回调:

    var def=$.Deferred();
    定义完成(功能(数据){
    控制台日志(数据);
    });
    //异步调用(延迟1秒)
    setTimeout(函数(){
    解析('1秒后回调')
    }, 1000);
    //立即执行
    log('Write something!');
    //控制台结果
    // 1. 写点什么
    // 2. 回调(1秒后)
    get()
    是异步的,因此ans.length等于零,因为数据在for循环执行后返回

    您必须在
    get()
    回调函数中执行
    for
    循环:

    $.get(url, function(data) {
       var arr = data.split(',');
       for(...) {
          //...
       }
    });
    
    执行流(您的代码)

  • 创建ans数组
  • 调用
    get()
    函数
  • 尝试执行
    for
    循环(无可用数据)
  • get()
    返回数据
  • 异步调用

  • 创建ans数组
  • 使用回调中的
    for
    循环调用
    get()
    函数
  • get()
  • 示例

    检查控制台中的结果。即使在console.log()之前调用setTimeout函数,代码也会继续执行并等待回调的响应(1秒后)。结果出来时,执行回调:

    var def=$.Deferred();
    定义完成(功能(数据){
    控制台日志(数据);
    });
    //异步调用(延迟1秒)
    setTimeout(函数(){
    解析('1秒后回调')
    }, 1000);
    //立即执行
    log('Write something!');
    //控制台结果
    // 1. 写点什么
    // 2. 回调(1秒后)