2015-04-06 101 views
-1

我有一个对象“驱动程序”在我的剧本的开头这样定义的:访问存储对象

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个司机的空间,但并不是所有人都会使用,而使用的将不会连续。

感谢您帮助新人。

+0

'如果($(driverList.draw> 0)){'没有任何意义。 – Mathletics 2015-04-06 03:10:04

+0

如果'name2'与''driver1''类似,'$(name2)'不会选择任何东西。 – Mathletics 2015-04-06 03:10:46

回答

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); 
      }