如何在循环中创建元素并将它们存储到JavaScript中的变量中以便在循环外部访问

时间:2015-06-30 09:49:15

标签: javascript jquery html

我想在循环中创建特定数字的一些元素,将它们存储在变量中,然后在该循​​环外部访问该变量。

我想在循环外部访问该变量的原因是我可以将它们放在append函数中。

function range(start, stop, step) {
    var a = [start],
        b = start;
    while (b < stop) {
        b += step;
        a.push(b);
    }
    return a;
}
var yAxis = range(1, 100, 10);

$.createAxis = function(axisValues) {
    $(axisValues).each(function(index, element) {
        yAxisNav = document.createElement('div');
        var newValue = document.createTextNode("I have content!");
        yAxisNav.appendChild(newValue);
        return yAxisNav.className = 'graphBar_yAxis_label';
    });
}(yAxis);

console.log(yAxisNav);
//$('body').append('<section>'+yAxisNav+'</section>');

以上只返回一个元素,如何存储它以使其可以在该循环外部访问?

3 个答案:

答案 0 :(得分:1)

获取createAxis

返回的值 来自函数的

return yAxisNav对象。这应该是函数createAxis中的最后一个语句,

return yAxisNav;

然后你可以得到如下:

var yAxisNav = $.createAxis(something);

<强> CODE

$.createAxis = function(axisValues) {
    $(axisValues).each(function(index, element) {
        yAxisNav = document.createElement('div');
        var newValue = document.createTextNode("I have content!");
        yAxisNav.appendChild(newValue);
        yAxisNav.className = 'graphBar_yAxis_label'; // Move up
        return yAxisNav; // Return complete object
        // ^^^^^^^^^^^^^
    });
}(yAxis);

答案 1 :(得分:1)

由于你想返回一个div的列表,我已经将yAxisNav移到了函数之外,并在每个循环中附加它。

我认为你正在寻找这个......

var yAxisNav = "";
$.createAxis = function (axisValues) {
    $(axisValues).each(function (index, element) {
        var elem;
        elem = document.createElement('div');
        var newValue = document.createTextNode("I have content!");
        elem.appendChild(newValue);
        elem.className = 'graphBar_yAxis_label';
        yAxisNav += elem.outerHTML;
    });
    return yAxisNav;
}(yAxis);

console.log(yAxisNav);
$('body').append('<section>'+yAxisNav+'</section>');

答案 2 :(得分:0)

如上所述here,请在要访问它的最高范围内定义变量。

在这种情况下,请在范围函数之外定义它。