Javascript 为什么jQuery不从数组中接受我的#ID?
我试图将3个日期选择器添加到我的3个输入字段中,因此我重复以下代码: 这一个有效: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\',\
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({
.......
});
}
});