说我有以下功能:
function checkPanes() {
activePane = '';
var panels = $("#slider .box .panel");
panels.each(function() {
//find the one in visible state.
if ($(this).is(":visible")) {
activePane = $(this).index()+1;
console.log(activePane);
}
});
} //END checkPanes();
理想情况下,我想在其他地方调用这个函数(最有可能来自另一个函数), 并检索我当前输出到控制台的值。
(示例..)
function exampleCase() {
checkPanes(); //evidently, does not return anything.
//Ideally, I want the numerical value, being output to console in above function.
}
提前致谢!所有的建议/意见都很受欢迎 干杯
答案 0 :(得分:4)
注意到循环;看起来你可能想要返回的是所有活动面板的数组(因为理论上可能有多个)。
function checkPanes() {
activePanes = [];
var panels = $("#slider .box .panel");
panels.each(function() {
//find the one in visible state.
if ($(this).is(":visible")) {
activePane.push($(this).index()+1);
console.log(activePane);
}
});
return activePanes;
}
如果你知道只有一个有效,你可以回到原来的方法,只需在return activePane
之后添加console.log
。
答案 1 :(得分:2)
忘掉所有说return activePane
的人,因为他们没有在jQuery each
循环中看到它。不行。
我建议重组你的选择器。您应该使用的选择器是:$("#slider .box .panel:visible")
。这将完全切断你的每个循环。例如,您可以按如下方式重构代码:
function checkPanes() {
return $("#slider .box .panel:visible").index();
}
function exampleCase() {
var visiblePane = checkPanes();
// ... do something with the index
}
我建议只使用内联选择器而不是制作新功能,但这是一个品味问题,特别是如果你必须在多个地方选择相同的东西。
答案 2 :(得分:0)
只需将控制台行切换为return语句:
function checkPanes() {
activePane = '';
var panels = $("#slider .box .panel");
panels.each(function() {
//find the one in visible state.
if ($(this).is(":visible")) {
activePane = $(this).index()+1;
return activePane; // Return the value and leave the function
}
});
} //END checkPanes();
致电:
function exampleCase() {
var thepane = checkPanes(); //evidently, does not return anything.
// ...
}
答案 3 :(得分:0)
我认为这就像使用return activePane;
答案 4 :(得分:0)
此:
function checkPanes() {
activePane = '';
var panels = $("#slider .box .panel");
panels.each(function() {
//find the one in visible state.
if ($(this).is(":visible")) {
activePane = $(this).index()+1;
}
});
return activePane;
} //END checkPanes();
和此:
function exampleCase() {
var myval=checkPanes(); //evidently, does not return anything.
console.log(myval);
}
答案 5 :(得分:0)
你必须在第一个函数内部返回一些东西来操纵它在第二个函数内:
function checkPanes() {
activePane = '';
var panels = $("#slider .box .panel");
//create a return array
visiblePanels = [];
panels.each(function() {
//find the one in visible state.
if ($(this).is(":visible")) {
activePane = $(this).index()+1;
//add the result to the returnb array
visiblePanels[] = activePane
}
});
// return results
return visiblePanels;
}
function exampleCase() {
var thepane = checkPanes();
//now it has all the visible panels that were founded in the other function
// you can access them with thepane[0] or iterate on them
}
我认为这就是你所需要的。
答案 6 :(得分:0)
如果您想在其他地方使用这些值,您可以保留您的代码并添加一个返回
function checkPanes() {
activePane = '';
var panels = $("#slider .box .panel");
panels.each(function() {
//find the one in visible state.
if ($(this).is(":visible")) {
activePane = $(this).index()+1;
console.log(activePane); //Logs to console.
return activePane; //Returns value also.
}
});
}
所以在这里你可以使用返回的值或只是让它登录到控制台。多数民众赞成我如何理解你的问题
function exampleCase() {
checkPanes(); //Now it will still write in console. but you dont need to use the return
alert(checkpanes()); //Would write it to console and to an alert!
}
但是请确保你返回字符串 - 或者如果你想把它作为文本显示在某个地方,请转换为字符串。