2015-08-21 111 views
1

好吧,用逗号修正它!谢谢!我还有一个问题。我的jQuery似乎正在打破。其他一切正常。当我把jQuery放入我的SUBCAT中时,它会中断。我很确定这是一个语法错误。这里是jQuery的代码。包含jQuery的JavaScript名称空间

<!DOCTYPE html> 
    <html> 
    <head>  
     <meta charset="UTF-8"> 
     <title>For the love of cats and JavaScript</title> 
    </head> 
    <body> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     <input id="filter" class="" name="filter" type="text" value="coffeePreference" onfocus="if (this.value == 'MYCATSPACE.SUBCAT.coffeePreference') {this.value = '';}" onblur="if (this.value == '') " /></br></br> 
     <input id="filter2" class="" name="filter2" type="text" value="breed" onfocus="if (this.value == 'breed') {this.value = '';}" onblur="if (this.value == '') " /></br></br> 
     <div id="catTable"></div> 
     <script> 

      var MYCATSPACE = MYCATSPACE || {}; 
      var sortCountry; 
      var sortBreed; 
      var sortCoffee; 

      $('input').keyup(function(e) { 
       var timeout; 
       clearTimeout(timeout); 
       timeout = setTimeout(function() { 
        criteria = this.value; 
        $.getJSON('cats.json', function(cats){MYCATSPACE.SUBCAT.filterCats(cats, criteria);}); 
       }.bind(this), 185); 
      }); 

      $("#filter2").keyup(function(e) { 
       var timeout; 
       clearTimeout(timeout); 
       timeout = setTimeout(function() { 
        criteria = this.value; 
        $.getJSON('cats.json', function(cats){MYCATSPACE.SUBCAT.filterCats2(cats, criteria);}); 
       }.bind(this), 185); 
      }); 
       MYCATSPACE.SUBCAT = { 


       renderData: function(cats){ 
        var output='<table id="indextable" border="1" cellpadding="10" cellspacing="0" style="border-collapse:collapse;">'; 
        output+="<thead>" 
        output+="<tr>"; 
        output+="<th> HeadShot </th>"; 
        output+="<th><button onclick='MYCATSPACE.SUBCAT.getSortedBreedData()'>Breed</button></th>"; 
        output+="<th><button onclick='MYCATSPACE.SUBCAT.getSortedCountryData()'>Country</button></th>"; 
        output+="<th><button onclick='MYCATSPACE.SUBCAT.getSortedCoffeeData()'>CoffeePreference</button></th>"; 
        output+="</tr>"; 
        output+="</thead>" 

        for (var i in cats) { 
         output+="<tbody>" 

         output+="<tr>"; 
         output+="<td><img src='" + cats[i].picture+"' alt='missing cat picture'></td>" 
         output+="<td>" + cats[i].breed + "</td>" 
         output+="<td>" + cats[i].country + "</td>" 
         output+="<td>" + cats[i].coffeePreference + "</td>" 
         output+="</tr>"; 
         output+="</tbody>" 

        } 
        output+="</table>"; 
        document.getElementById("catTable").innerHTML=output; 
       },  

       getData: function(){  
        $.getJSON('cats.json', function(cats) { 
         var cats = cats; 
         MYCATSPACE.SUBCAT.renderData(cats);  
        }); 
       }, 

       getSortedCountryData: function(){ 
        $.getJSON('cats.json', function(cats) { 
         var cats = cats; 
         if (sortCountry!=true) 
          MYCATSPACE.SUBCAT.sortData(cats,'country',1); 
         else 
          MYCATSPACE.SUBCAT.sortData(cats,'country',-1); 
          sortCountry ^= true; 
        }); 
       },    

       getSortedBreedData: function(){ 
        $.getJSON('cats.json', function(cats) { 
         var cats = cats; 
         if (sortCountry!=true) 
          MYCATSPACE.SUBCAT.sortData(cats,'breed',1); 
         else 
          MYCATSPACE.SUBCAT.sortData(cats,'breed',-1); 
          sortCountry ^= true; 
        }); 
       }, 

       getSortedCoffeeData: function(){ 
        $.getJSON('cats.json', function(cats) { 
         var cats = cats; 
         if (sortCountry!=true) 
          MYCATSPACE.SUBCAT.sortData(cats,'coffeePreference',1); 
         else 
          MYCATSPACE.SUBCAT.sortData(cats,'coffeePreference',-1); 
          sortCountry ^= true; 
        }); 
       }, 

       sortData: function(cats, element, direction){ 
        switch(element) { 
         case 'breed': 
         var sortedData = cats.sort(function(a,b){return (a.breed < b.breed) ? -1*direction : 1*direction;}); 
         MYCATSPACE.SUBCAT.renderData(cats); 
         break; 
         case 'country': 
         var sortedData = cats.sort(function(a,b){return (a.country < b.country) ? -1*direction : 1*direction;}); 
         MYCATSPACE.SUBCAT.renderData(cats); 
         break; 
         case 'coffeePreference': 
         var sortedData = cats.sort(function(a,b){return (a.coffeePreference < b.coffeePreference) ? -1*direction : 1*direction;}); 
         MYCATSPACE.SUBCAT.renderData(cats); 
         default: 
         MYCATSPACE.SUBCAT.renderData(cats); 
        } 

       }, 

       filterCats: function(cats, criteria){ 
        //var filteredData = cats.filter(function(c){return c.breed.toUpperCase().indexOf(criteria.toUpperCase()) !== -1;}); 
        var filteredData = cats.filter(function(c){return c.coffeePreference.toUpperCase().indexOf(criteria.toUpperCase()) === 0 ;});  
        MYCATSPACE.SUBCAT.renderData(cats); 
       }, 

       filterCats2: function(cats, criteria){ 
        //var filteredData = cats.filter(function(c){return c.breed.toUpperCase().indexOf(criteria.toUpperCase()) !== -1;}); 
        var filteredData = cats.filter(function(d){return d.breed.toUpperCase().indexOf(criteria.toUpperCase()) === 0 ;});  
        MYCATSPACE.SUBCAT.renderData(cats); 
       } 

      } 

      MYCATSPACE.SUBCAT.getData(); 

     </script> 
    </body> 
    </html> 

回答

2

你错过一个逗号在你的对象中。如果您显示对象的准系统很明显:

MYCATSPACE.SUBCAT = { 
    renderData: function(cats) { 
     // Code... 
    }, // <- Missing comma 

    getData: function() { 
     // Code... 
    } 
} 
+0

嗨,谢谢!我还有一个关于将jQuery添加到名称空间的问题。我修改了上面的代码。 – 00robinette

+0

@ 00robinette如果你还有其他问题,你应该把它作为一个新问题发布。 [修改现有的问题以提出不同的问题通常被认为是不好的做法。](http://meta.stackoverflow.com/questions/266767/what-is-the-the-best-way-to-ask-follow-问题)我会建议撤消你之前的编辑并发布一个新问题。 – Stryner

+0

啊。我道歉。 – 00robinette

1

你只有纠正缺少 '',在下面的例子中,我escluded你的Ajax调用和按预期方式工作

var MYCATSPACE = MYCATSPACE || {}; 
 
       MYCATSPACE.SUBCAT = { 
 
       renderData: function (cats) { 
 
        
 
        var output='<table id="indextable" border="1" cellpadding="10" cellspacing="0" style="border-collapse:collapse;">'; 
 
        output+="<thead>" 
 
        output+="<tr>"; 
 
        output+="<th> HeadShot </th>"; 
 
        output+="<th><button onclick='getSortedBreedData()'>Breed</button></th>"; 
 
        output+="<th><button onclick='getSortedCountryData()'>Country</button></th>"; 
 
        output+="<th><button onclick='getSortedCoffeeData()'>CoffeePreference</button></th>"; 
 
        output+="</tr>"; 
 
        output+="</thead>" 
 

 
        for (var i in cats) { 
 
        output+="<tbody>" 
 

 
        output+="<tr>"; 
 
        output+="<td><img src='" + cats[i].picture+"' alt='missing cat picture'></td>" 
 
        output+="<td>" + cats[i].breed + "</td>" 
 
        output+="<td>" + cats[i].country + "</td>" 
 
        output+="<td>" + cats[i].coffeePreference + "</td>" 
 
        output+="</tr>"; 
 
        output+="</tbody>" 
 

 
        } 
 
        output+="</table>"; 
 
        document.getElementById("catTable").innerHTML=output; 
 
       }, // MISSING COMMA HERE 
 

 
       getData: function(){  
 
        //$.getJSON('cats.json', function(cats) { 
 
        // var cats = cats; 
 
        var cats = [{ picture: '', breed: 'apple', country: 'ITA', coffeePreference: 'pip' }]; 
 
        MYCATSPACE.SUBCAT.renderData(cats);  
 
        //} 
 
        //); 
 
       }, 
 

 

 
       } 
 

 
       MYCATSPACE.SUBCAT.getData();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="filter" class="" name="filter" type="text" value="coffeePreference" onfocus="if (this.value == 'coffeePreference') {this.value = '';}" onblur="if (this.value == '') " /></br></br> 
 
      <input id="filter2" class="" name="filter2" type="text" value="breed" onfocus="if (this.value == 'breed') {this.value = '';}" onblur="if (this.value == '') " /></br></br> 
 
<div id="catTable"></div>

+0

是不是有一个逗号太多的这段时间,在的getData结束? – boisvert

+0

@boisvert还有另一个逗号,但它不是错误 – InferOn

相关问题