我有一个触发另一个函数的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();
答案 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变量范围。