Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按浏览器差异下划线js__Javascript_Jquery_Underscore.js - Fatal编程技术网

Javascript 按浏览器差异下划线js_

Javascript 按浏览器差异下划线js_,javascript,jquery,underscore.js,Javascript,Jquery,Underscore.js,我看到select的optgroup和选项的呈现顺序出现了一些奇怪的行为。我有一些数据用于使用下划线js\u grouby函数在select和options中构建optgroup。Firefox呈现数据的方式与我对json、Chrome和IE的排序相反 Html: 全部的 JavaScript: $(document).ready(function() { var dataresults = [{"MonthName":"April","Month":4,"Year":2014,"Da

我看到select的optgroup和选项的呈现顺序出现了一些奇怪的行为。我有一些数据用于使用下划线js\u grouby函数在select和options中构建optgroup。Firefox呈现数据的方式与我对json、Chrome和IE的排序相反

Html:


全部的
JavaScript:

 $(document).ready(function() {
 var dataresults = [{"MonthName":"April","Month":4,"Year":2014,"Date":"\/Date(1397451600000)\/"},{"MonthName":"January","Month":1,"Year":2014,"Date":"\/Date(1388556000000)\/"},{"MonthName":"November","Month":11,"Year":2013,"Date":"\/Date(1384322400000)\/"},{"MonthName":"July","Month":7,"Year":2013,"Date":"\/Date(1373864400000)\/"}];

 BindYearDropDown(dataresults);

 function BindYearDropDown(data)
    {
        var groupData = _.groupBy(data, function (obj) {
            return obj.Year;
        });

        var optGroups = [];
        for (var key in groupData) {
            if (groupData.hasOwnProperty(key)) {
                var optGroup = $("<optgroup></optgroup>");
                optGroup.attr("label", key);
                optGroup.attr("id", key);
                var currentGroup = groupData[key];
                for (var i = 0; i < currentGroup.length; i++) {
                    $("<option />").attr("value", currentGroup[i].Month).html(currentGroup[i].MonthName).appendTo(optGroup);
                }
                optGroups.push(optGroup);
            }
        }
        //optGroups.reverse();
        for (var i = 0; i < optGroups.length; i++) {
            $('#dropdownlist').append(optGroups[i]);
        }
    };
$(文档).ready(函数(){
var dataresults=[{“MonthName”:“四月”、“月”:4,“年”:2014,“日期”:“\/日期(1397451600000)\/”,{“MonthName”:“一月”、“月”:1,“年”:2014,“日期”:“\/日期(138855600000)\/”,{“MonthName”:“十一月”、“月”:11,“年”:2013,“日期”:“\/日期(1384322400000)\/”,{“MonthName”:“七月”、“月”:7,“年”:2013,“日期”:“\/日期(1373864400000)\/”;
BindYear下拉列表(数据结果);
功能下拉列表(数据)
{
var groupData=u.groupBy(数据,函数(obj){
返回目标年;
});
var optGroups=[];
for(groupData中的var键){
if(groupData.hasOwnProperty(键)){
var optGroup=$(“”);
optGroup.attr(“标签”,键);
optGroup.attr(“id”,键);
var currentGroup=组数据[键];
对于(var i=0;i
FireFox结果:(这是我希望数据显示的方式)

铬结果:

IE11结果:

提前感谢,


KC

如果您真的想使用您提供的结构中的数据,您可以创建一个年份列表,然后对其进行排序。否则,我建议使用@mu太短的方法


JavaScript对象。您使用了错误的数据结构,如果您需要按特定顺序处理对象,则必须使用数组并根据需要对该数组进行排序。
.groupBy
返回一个对象,而不是数组。感谢您指出这一点,FF处理JS对象是否与其他浏览器不同?我真正的返回数据的服务需要as parm和FF中的排序方向会根据asc或desc返回的数据的基数而变化。@KC。在本文中,它显示了偶数对象顺序依赖于操作系统。Linux上的Chrome将产生与Winows上的Chrome不同的结果!我想,现在,您必须自己排序结果。AFAIK大多数浏览器使用插入顺序b但这并不能保证。不要依赖于经验性的“这个浏览器做什么?”检查,从规范开始,调整以解决浏览器问题。
 $(document).ready(function() {
 var dataresults = [{"MonthName":"April","Month":4,"Year":2014,"Date":"\/Date(1397451600000)\/"},{"MonthName":"January","Month":1,"Year":2014,"Date":"\/Date(1388556000000)\/"},{"MonthName":"November","Month":11,"Year":2013,"Date":"\/Date(1384322400000)\/"},{"MonthName":"July","Month":7,"Year":2013,"Date":"\/Date(1373864400000)\/"}];

 BindYearDropDown(dataresults);

 function BindYearDropDown(data)
    {
        var groupData = _.groupBy(data, function (obj) {
            return obj.Year;
        });

        var optGroups = [];
        for (var key in groupData) {
            if (groupData.hasOwnProperty(key)) {
                var optGroup = $("<optgroup></optgroup>");
                optGroup.attr("label", key);
                optGroup.attr("id", key);
                var currentGroup = groupData[key];
                for (var i = 0; i < currentGroup.length; i++) {
                    $("<option />").attr("value", currentGroup[i].Month).html(currentGroup[i].MonthName).appendTo(optGroup);
                }
                optGroups.push(optGroup);
            }
        }
        //optGroups.reverse();
        for (var i = 0; i < optGroups.length; i++) {
            $('#dropdownlist').append(optGroups[i]);
        }
    };
/* reusable descending sort function */
function sortDescending(value) {
  return value * -1;
};

     ...
     var groupData = _.groupBy(data, function (obj) {
         return obj.Year;
     });

     /* Sort the years in descending order */
     var years = _.sortBy(_.keys(groupData), sortDescending);

     var optGroups = [];
     for (var index in years) {
         var key = years[index];
     ...