包含jQuery的JavaScript名称空间

JavaScript namespaces that include jQuery

本文关键字:空间 JavaScript jQuery 包含      更新时间:2023-09-26

好了,逗号修复了它!谢谢!我还有一个问题。我的jQuery似乎坏了。其他的都可以。当我把jQuery放在SUBCAT里面的时候,它就坏了。我很确定这是一个语法错误。下面是jQuery的代码。

<!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>

对象中缺少一个逗号。如果你显示你的对象的骨架,它会变得明显:

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

您只需要纠正缺失的',',在下面的示例中,我已经排除了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>