返回一个元素作为字符串输出未定义

时间:2018-10-16 05:27:01

标签: javascript jquery html function

所有代码都在此jsfiddle中,问题是该函数未返回预期值,但确实在控制台上打印了该代码,我不确定我做错了什么吗?

编辑:这就是所有代码,我返回的是html,但从未得到它的值

//Returns all assistants to specific event
function getAssistants(id) {
let uri = "https://api.myjson.com/bins/uqndk";
$.getJSON(uri, function(data) {
let html = "";

$.each(data.events[id].assistants, function(index, value) {
  if (value == 'undefined' || value == null) {
    html = '<li class="collection-item">No hay asistentes registrados.</li>';
  } else {
    html += '<li class="collection-item">' + value.name + '</li>';
  }
});

//console.log(html);

return html;
});
}

$("#assistants").append(getAssistants(1));

3 个答案:

答案 0 :(得分:1)

发生此问题是因为您尝试异步获取返回结果,但实际上是异步的

在此处查看代码中的修改:

a.value >= b.start_value and a.value <= b.end_value
//Returns all assistants to specific event
function getAssistants(id) {
  let uri = "https://api.myjson.com/bins/uqndk";
  $.getJSON(uri, function(data) {
    let html = "";

    $.each(data.events[id].assistants, function(index, value) {
      if (value == 'undefined' || value == null) {
        html = '<li class="collection-item">No hay asistentes registrados.</li>';
      } else {
        html += '<li class="collection-item">' + value.name + '</li>';
      }
    });
    
    //console.log(html);

    $("#assistants").append(html);
  });
}

getAssistants(1);

在此解决方案中,我将您的代码更改为将结果放入get块中,以便它可以工作...

另一种解决方案: 您也可以通过在ES6中使用async / await来解决此问题,答应... etc检查此示例:Example

答案 1 :(得分:0)

您要做的只是设置一个变量。您实际上需要console.log

$.each(data.events[id].assistants, function(index, value) {
  if (value == 'undefined' || value == null) {
    html = '<li class="collection-item">No hay asistentes registrados.</li>';
  } else {
    html += '<li class="collection-item">' + value.name + '</li>';
  }
  console.log(html);
});

答案 2 :(得分:0)

您可以更改代码吗

insted of return html; in function --> $("#assistants").append(html);

on function call just call function like : getAssistants(1);

检查小提琴        https://jsfiddle.net/jsaf1btz/2/