jQuery函数转换为另一个函数不会返回所有结果

时间:2019-06-02 19:09:21

标签: jquery function append

我有一个触发另一个函数的jQuery函数,但它总是返回最后一个结果。我的代码有什么问题?谢谢。

function numbers(a, b) {
  res = '<div>' + a + ',' + b + '</div>';
}

function bloc1() {
  numbers(1, 2);
  numbers(3, 4);
  numbers(5, 6);
  $("#bloc1").append(res);
  // ouput : 5,6
  // but I want : 1,2 3,4 5,6
}

function bloc2() {
  numbers(10, 20);
  numbers(30, 40);
  $("#bloc2").append(res);
  // ouput : 30,40
  // but I want : 10,20 30,40
}

function bloc3() {
  numbers(500, 600);
  numbers(700, 800);
  $("#bloc3").append(res);
  // ouput : 700,800
  // but I want : 500,600 700,800   
}

bloc1();
bloc2();
bloc3();

1 个答案:

答案 0 :(得分:0)

每次拨打电话号码都会覆盖res,而附件会获取res的最新版本并将其打印为html。

看看这个小提琴,它应该回答您的问题: https://jsfiddle.net/q4bjso0n/5/

更改numbers函数,以便返回res,而不仅仅是设置。

function numbers(a, b) {
  res = '<div>' + a + ',' + b + '</div>';
  return res;
}

或更佳

function numbers(a, b) {
  return '<div>' + a + ',' + b + '</div>';
}

现在,数字函数每次调用时都会返回res的值。

您现在需要捕获变量中的函数编号的值,并将该值附加到html dom中。

您可以通过其他方式解决此问题,例如:

function bloc1() {
  //numbers(1, 2);
  //numbers(3, 4);
  //numbers(5, 6);
  $("#bloc1").append(""+numbers(1, 2)+numbers(3, 4)+numbers(5, 6));
  // ouput : 5,6
  // but I want : 1,2 3,4 5,6
}

或这样...

function bloc1() {
  a = numbers(1, 2);
  b = numbers(3, 4);
  c = numbers(5, 6);
  $("#bloc1").append( ""+a+b+c);
  // ouput : 5,6
  // but I want : 1,2 3,4 5,6
}

或类似这样:

function bloc1() {
  myres = ""+numbers(1, 2)+ numbers(3, 4)+ numbers(5, 6);
  $("#bloc1").append(myres);
  // ouput : 5,6
  // but I want : 1,2 3,4 5,6
}

“ res”存在于功能编号中。您需要检查函数和javascript变量范围。