访问存储对象

时间:2015-04-06 01:14:33

标签: javascript jquery

我有一个对象" Driver"在我的脚本开头定义:

function Driver(draw, name) {
    this.draw = draw;
    this.name = name;
}

我使用这个JQuery来创建新的驱动程序:

var main = function () {
   // add driver to table
    $('#button').click(function ( ) {
        var name = $('input[name=name]').val();
        var draw = $('input[name=draw]').val();
        var draw2 = "#"+draw;
        var name2 = "driver"+draw
        console.log(draw2);
        console.log(name2);
        if($(name2).text().length > 0){
            alert("That number has already been selected");}
        else{$(name2).text(name);
            var name2 = new Driver(draw, name);}
});

这部分工作得很好。但是,当我稍后尝试访问这些驱动程序时,控制台会返回它未定义:

    $('.print').click(function ( ) {
        for(var i=1; i<60; i++){
            var driverList = "driver"+i;
            if($(driverList.draw>0)){
            console.log(driverList);
            console.log(driverList.name);
}

如果您有兴趣,我已经上传了我正在访问此网站的整个项目:

http://precisioncomputerservices.com/slideways/index.html

基本上,代码的底部只是试图看看我是否以正确的方式访问驱动程序(我显然不是这样)。一旦我知道如何访问它们,我就会将它们保存到一个文件中,以便在另一个页面上使用。

问题是最后一位代码中的If语句。我试图让它只打印实际上已经输入到表单中的驱动程序。我有60个司机的空间,但不是所有的都会被使用,而且使用的那些不会连续。

感谢帮助新人。

1 个答案:

答案 0 :(得分:0)

您不能像使用过那样使用变量来引用变量。

在您的情况下,一个选项是使用基于键/值的对象,如

var drivers = {};
var main = function () {
    // add driver to table
    $('#button').click(function () {
        var name = $('input[name=name]').val();
        var draw = $('input[name=draw]').val();
        var draw2 = "#" + draw;
        var name2 = "driver" + draw
        console.log(draw2);
        console.log(name2);
        if ($(name2).text().length > 0) {
            alert("That number has already been selected");
        } else {
            $(name2).text(name);
            drivers[name2] = new Driver(draw, name);
        }
    });


    $('.print').click(function () {
        for (var i = 1; i < 60; i++) {
            var name2 = "driver" + i;
            var driver = drivers[name2];
            if (driver.draw > 0) {
                console.log(driver);
                console.log(driver.name);
            }