Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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 为什么jQuery不从数组中接受我的#ID?_Javascript_Jquery_Arrays_For Loop_Datepicker - Fatal编程技术网

Javascript 为什么jQuery不从数组中接受我的#ID?

Javascript 为什么jQuery不从数组中接受我的#ID?,javascript,jquery,arrays,for-loop,datepicker,Javascript,Jquery,Arrays,For Loop,Datepicker,我试图将3个日期选择器添加到我的3个输入字段中,因此我重复以下代码: 这一个有效: jQuery(function(){ jQuery("#newnessdate").datepicker({ dateFormat: \'yy-mm-dd\', monthNames: [\'Januar\',\'Februar\',\'März\',\'April\',\'Mai\',\'Juni\',\'Juli\',\'August\',\'September\',\

我试图将3个日期选择器添加到我的3个输入字段中,因此我重复以下代码:

这一个有效:

jQuery(function(){
    jQuery("#newnessdate").datepicker({
        dateFormat: \'yy-mm-dd\',
        monthNames: [\'Januar\',\'Februar\',\'März\',\'April\',\'Mai\',\'Juni\',\'Juli\',\'August\',\'September\',\'Oktober\',\'November\',\'Dezember\'],
        dayNames: [\'Sonntag\', \'Montag\', \'Dienstag\', \'Mittwoch\', \'Donnerstag\', \'Freitag\',\'Samstag\'],
        dayNamesMin: [\'So\', \'Mo\', \'Di\', \'Mi\', \'Do\', \'Fr\', \'Sa\']
    });
});

jQuery(function(){
    jQuery("#availabilitydate").datepicker({
        dateFormat: \'yy-mm-dd\',
        monthNames: [\'Januar\',\'Februar\',\'März\',\'April\',\'Mai\',\'Juni\',\'Juli\',\'August\',\'September\',\'Oktober\',\'November\',\'Dezember\'],
        dayNames: [\'Sonntag\', \'Montag\', \'Dienstag\', \'Mittwoch\', \'Donnerstag\', \'Freitag\',\'Samstag\'],
        dayNamesMin: [\'So\', \'Mo\', \'Di\', \'Mi\', \'Do\', \'Fr\', \'Sa\']
    });
});

jQuery(function(){
    jQuery("#expirydate").datepicker({
        dateFormat: \'yy-mm-dd\',
        monthNames: [\'Januar\',\'Februar\',\'März\',\'April\',\'Mai\',\'Juni\',\'Juli\',\'August\',\'September\',\'Oktober\',\'November\',\'Dezember\'],
        dayNames: [\'Sonntag\', \'Montag\', \'Dienstag\', \'Mittwoch\', \'Donnerstag\', \'Freitag\',\'Samstag\'],
        dayNamesMin: [\'So\', \'Mo\', \'Di\', \'Mi\', \'Do\', \'Fr\', \'Sa\']
    });
});
这并不是:

var dateIds = [
    "#newnessdate", 
    "#availabilitydate",
    "#expirydate"
];

for (var i = 0; i < dateIds.length; i++)
{
    jQuery(function(){
        jQuery(dateIds[i]).datepicker({
            dateFormat: \'yy-mm-dd\',
            monthNames: [\'Januar\',\'Februar\',\'März\',\'April\',\'Mai\',\'Juni\',\'Juli\',\'August\',\'September\',\'Oktober\',\'November\',\'Dezember\'],
            dayNames: [\'Sonntag\', \'Montag\', \'Dienstag\', \'Mittwoch\', \'Donnerstag\', \'Freitag\',\'Samstag\'],
            dayNamesMin: [\'So\', \'Mo\', \'Di\', \'Mi\', \'Do\', \'Fr\', \'Sa\']
        });
    });
}

jQuery函数似乎不接受数组中的字符串作为字符串。您能帮助我吗?

您遇到的问题是,调用回调时循环已完成,
i
的值是循环结束的值

简单的修复(附加的好处是不增加对
$.ready
的调用):

jQuery(函数(){
对于(var i=0;i
根据文档,“jQuery(callback)”类似于“jQuery(document).ready(callback)”。您将失去上下文(循环迭代器“i”),因此最好这样做:

jQuery(function(){
    var dateIds = [
        "#newnessdate", 
        "#availabilitydate",
        "#expirydate"
    ];

    for (var i = 0; i < dateIds.length; i++)
    {
        jQuery(dateIds[i]).datepicker({
            .......
        });
    }
});
jQuery(函数(){
var dateIds=[
“#newnessdate”,
“#可用性日期”,
“#过期”
];
对于(var i=0;i

它保存循环上下文并防止创建多个事件(文档就绪)侦听器。如果您需要从全局上下文访问数组数据,只需将其放在回调函数之外,但使用全局上下文存储数据是不好的做法。

您有太多的
jQuery(function(){
语句。“#epages_expirydate”不是dateid[i],因为dateid[i]是“#expirydate”。也许您想要
jQuery(“#epages”+dateIds[i]).datepicker({
和dateIds没有“#”?(我想这两个脚本的HTML结构是完全相同的)这些如何处理所有这些语法错误?哦,是的,我把问题简化了,忘了删除“epages”。这只是为了简化。这是一种更像jQuery的方式。:)哇,谢谢,这是一种更简单、更简短的解决方案。尽管我的真正问题是,“jQuery(function(){…})”的太多用法:-D jQuery在你意识到可以选择事物的多种方式时很有趣!
jQuery(function(){
    for (var i = 0; i < dateIds.length; i++)
    {
            jQuery(dateIds[i]).datepicker({
                dateFormat: \'yy-mm-dd\',
                monthNames: [\'Januar\',\'Februar\',\'März\',\'April\',\'Mai\',\'Juni\',\'Juli\',\'August\',\'September\',\'Oktober\',\'November\',\'Dezember\'],
                dayNames: [\'Sonntag\', \'Montag\', \'Dienstag\', \'Mittwoch\', \'Donnerstag\', \'Freitag\',\'Samstag\'],
                dayNamesMin: [\'So\', \'Mo\', \'Di\', \'Mi\', \'Do\', \'Fr\', \'Sa\']
            });
        }
    }
);
$("#newnessdate, #availabilitydate, #expirydate").datepicker({
            dateFormat: \'yy-mm-dd\',
            monthNames: [\'Januar\',\'Februar\',\'März\',\'April\',\'Mai\',\'Juni\',\'Juli\',\'August\',\'September\',\'Oktober\',\'November\',\'Dezember\'],
            dayNames: [\'Sonntag\', \'Montag\', \'Dienstag\', \'Mittwoch\', \'Donnerstag\', \'Freitag\',\'Samstag\'],
            dayNamesMin: [\'So\', \'Mo\', \'Di\', \'Mi\', \'Do\', \'Fr\', \'Sa\']
        });
    });
}
var dateIds = [
    "#newnessdate", 
    "#availabilitydate",
    "#expirydate"
];

var options = {
    dateFormat: 'yy-mm-dd',
    monthNames: ['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],
    dayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag','Samstag'],
    dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa']
};

$.each(dateIds, function(k, v) {
    $(v).datepicker(options); 
});
jQuery(function(){
    var dateIds = [
        "#newnessdate", 
        "#availabilitydate",
        "#expirydate"
    ];

    for (var i = 0; i < dateIds.length; i++)
    {
        jQuery(dateIds[i]).datepicker({
            .......
        });
    }
});