2016-06-09 69 views
0

好吧,所以我创建了一个各种分级。你加在你的第一个和最后一个名称,等级,并把它添加到表(它的工作原理,当我在Chrome上运行,而不是在的jsfiddle出于某种原因,这是不是问题)订购数组问题

https://jsfiddle.net/bhLhayar/

我遇到的问题是分拣。我的单选按钮说“未定义”,但我认为我已经在我的JS中定义了它们。请咨询? XD

function sortby(what){ 
if(what == 'firstN'){studentdata.sortbyfirstSet();} 
if(what == 'lastN'){studentdata.sortbylastSet();} 
if(what == 'gradeUp'){studentdata.sortbygradeSetUp();} 
if(what == 'gradeDown'){studentdata.sortbygradeSetDown();} 
updatetable() 
} 

这里是我认为我出错的代码?与此有关:

sortbyFirstSet(){ 
     this.data.sort(function (one, two){ 
      if(one.firstName > two.firstName){return 1} 
      if(one.firstName < two.firstName){return -1} 
      if(one.firstName == two.firstName){return 0} 
     }); 
    } 
    sortbylastSet(){ 
     this.data.sort(function (one, two){ 
      if(one.lastName > two.lastName){return 1} 
      if(one.lastName < two.lastName){return -1} 
      if(one.lastName == two.lastName){return 0} 
     }); 
    } 
    sortbygradeSetUp(){ 
     this.data.sort(function (one, two){ 
      if(one.finalGrade > two.finalGrade){return 1} 
      if(one.finalGrade < two.finalGrade){return -1} 
      if(one.finalGrade == two.finalGrade){return 0} 
     }); 
    } 
    sortbygradeSetDown(){ 
    this.data.sort(function (one, two){ 
     if(one.finalGrade < two.finalGrade){return 1} 
     if(one.finalGrade > two.finalGrade){return -1} 
     if(one.finalGrade == two.finalGrade){return 0} 
    }); 
    } 
+1

你说什么单选按钮?我没有看到任何HTML代码。 –

+0

我放了一个jsfiddle.net的链接 – JHillman

+0

至少在jsFiddle中,看起来没有一个'onclick =“”'属性可以正常工作。使用'.addEventListener'至少适用于'Info Submit'按钮。 –

回答

1

您似乎传递一个字符串作为变量。试试onclick =“sortby('lastN')”等等。

而你没有可更新的功能。也许你想打电话给updateGradebook()?

更新 还有一件事,您对排序方法的第一次调用拼写错误。应该是sortbyFirstSet

+0

这不是问题的答案。 –

+0

@TomBurris它似乎是因为他传递给方法的价值是未定义的? – H77

+0

你测试过,看看是否解决了这个问题?不幸的是,它没有。这个脚本有很多问题,答案应该解决所有问题。 –

0

请更正单选按钮上的onclick代码以从sortby(firstN)中排序sortby('firstN')。此外,似乎studentdata是一个数组,并且你正在尝试使用它来调用sortby函数。

+0

这不是问题的答案。 –