移动JavaScript对象并在每次单击时增加一个?

移动JavaScript对象并在每次单击时增加一个?,javascript,jquery,Javascript,Jquery,我试图在单击一个div时移动到下一个月,我将月份作为对象存储在months=[];但是当我使用++时,它只会在同一个月重复,为什么?这是我的JS: var newdate = new Date(); var getnewmonthword = newdate.getMonth(); var i = 0; months = []; months[0] = ('january'); months[1] = ('february'); months[2] = ('march'); months[3]

我试图在单击一个div时移动到下一个月,我将月份作为对象存储在months=[];但是当我使用++时,它只会在同一个月重复,为什么?这是我的JS:

var newdate = new Date();
var getnewmonthword = newdate.getMonth();
var i = 0;
months = [];
months[0] = ('january');
months[1] = ('february');
months[2] = ('march');
months[3] = ('apri');
months[4] = ('may');
months[5] = ('june');
months[6] = ('july');
months[7] = ('august');
months[8] = ('september');
months[9] = ('october');
months[10] = ('november');
months[11] = ('december');
var countemonth = getnewmonthword;
var myMonthName = months[countemonth];

$('#test span').replaceWith('<span>' + myMonthName + '</span>')
$('#addone').on('click', function () {
    alert('fred');
    countemonth++;
    //months[++i];
   // $('#test span').replaceWith('<span>' + countemonth + '</span>')
    $('#test span').replaceWith('<span>' + myMonthName + '</span>')
});
var newdate=newdate();
var getnewmonthword=newdate.getMonth();
var i=0;
月份=[];
月[0]=(“一月”);
月[1]=(‘二月’);
月[2]=(‘三月’);
月[3]=('apri');
月[4]=(“五月”);
月[5]=(‘六月’);
月[6]=(“七月”);
月[7]=(“八月”);
月[8]=(‘九月’);
月[9]=(“十月”);
月[10]=(‘十一月’);
月[11]=(“十二月”);
var countemonth=getnewmonthword;
var myMonthName=月[数月];
$(“#测试范围”)。替换为(“”+myMonthName+“”)
$('#addone')。在('click',函数(){
警惕(“弗雷德”);
countemonth++;
//月[++i];
//$('#测试范围')。替换为(''+countemonth+'')
$(“#测试范围”)。替换为(“”+myMonthName+“”)
});

如果我取消对countemonth replace的注释,它实际上会向每个字段添加1,但它只返回数字而不是名称…

在每次单击时更新您的
myMonthName
,如下所示:

$('#addone').on('click', function () {    
    countemonth = ((countemonth+1) % months.length);
    myMonthName = months[countemonth];
    $('#test span').replaceWith('<span>' + myMonthName + '</span>')
});
$('#addone')。在('click',函数(){
countemonth=((countemonth+1)%months.length);
myMonthName=月[数月];
$(“#测试范围”)。替换为(“”+myMonthName+“”)
});

在每次单击时更新您的
myMonthName
,如下所示:

$('#addone').on('click', function () {    
    countemonth = ((countemonth+1) % months.length);
    myMonthName = months[countemonth];
    $('#test span').replaceWith('<span>' + myMonthName + '</span>')
});
$('#addone')。在('click',函数(){
countemonth=((countemonth+1)%months.length);
myMonthName=月[数月];
$(“#测试范围”)。替换为(“”+myMonthName+“”)
});

myMonthName在全局范围内。将其移动到单击处理程序中:

$('#addone').on('click', function () {
    alert('fred');
    countemonth++;
    var myMonthName = months[countemonth];        
    $('#test span').replaceWith('<span>' + myMonthName + '</span>')
});
countemonth++;
myMonthName = months[countemonth];
var monthNameElement = $('#test span');

$('#addone').on('click', function () {
    alert('fred');
    countemonth++;

    // Now will work!
    var myMonthName = months[countemonth];
    monthNameElement.text(myMonthName);
});
$('addone')。在('click',函数(){
警惕(“弗雷德”);
countemonth++;
var myMonthName=月[数月];
$(“#测试范围”)。替换为(“”+myMonthName+“”)
});

myMonthName在全局范围内。将其移动到单击处理程序中:

$('#addone').on('click', function () {
    alert('fred');
    countemonth++;
    var myMonthName = months[countemonth];        
    $('#test span').replaceWith('<span>' + myMonthName + '</span>')
});
countemonth++;
myMonthName = months[countemonth];
var monthNameElement = $('#test span');

$('#addone').on('click', function () {
    alert('fred');
    countemonth++;

    // Now will work!
    var myMonthName = months[countemonth];
    monthNameElement.text(myMonthName);
});
$('addone')。在('click',函数(){
警惕(“弗雷德”);
countemonth++;
var myMonthName=月[数月];
$(“#测试范围”)。替换为(“”+myMonthName+“”)
});
执行此操作时:

var myMonthName = months[countemonth];
从数组中获得索引处的值,当前值为
countemonth
。它不是带电连接。如果您稍后更改
countemonth
(就像您在单击处理程序中所做的那样),它将不会自动更新
myMonthName
。基本上,您需要在单击处理程序中重复该赋值:

$('#addone').on('click', function () {
    alert('fred');
    countemonth++;
    var myMonthName = months[countemonth];        
    $('#test span').replaceWith('<span>' + myMonthName + '</span>')
});
countemonth++;
myMonthName = months[countemonth];
var monthNameElement = $('#test span');

$('#addone').on('click', function () {
    alert('fred');
    countemonth++;

    // Now will work!
    var myMonthName = months[countemonth];
    monthNameElement.text(myMonthName);
});
执行此操作时:

var myMonthName = months[countemonth];
从数组中获得索引处的值,当前值为
countemonth
。它不是带电连接。如果您稍后更改
countemonth
(就像您在单击处理程序中所做的那样),它将不会自动更新
myMonthName
。基本上,您需要在单击处理程序中重复该赋值:

$('#addone').on('click', function () {
    alert('fred');
    countemonth++;
    var myMonthName = months[countemonth];        
    $('#test span').replaceWith('<span>' + myMonthName + '</span>')
});
countemonth++;
myMonthName = months[countemonth];
var monthNameElement = $('#test span');

$('#addone').on('click', function () {
    alert('fred');
    countemonth++;

    // Now will work!
    var myMonthName = months[countemonth];
    monthNameElement.text(myMonthName);
});

您的意思是每次单击都应该设置
myMonthName
变量吗

这句话

var myMonthName = months[countemonth];
…只有一次

摘要:每次调用click事件处理程序时,都需要设置整个变量

$('#addone').on('click', function () {
    alert('fred');
    countemonth++;

    // Now will work!
    var myMonthName = months[countemonth];

    $('#test span').replaceWith('<span>' + myMonthName + '</span>')
});
另外,为什么要更换
span

$(“#测试范围”)。替换为(“”+myMonthName+“”)

最后,您可以按如下方式存储jQuery对象:

var monthNameElement = $('#test span');
…然后在任何地方重用,甚至在单击处理程序中:

$('#addone').on('click', function () {
    alert('fred');
    countemonth++;
    var myMonthName = months[countemonth];        
    $('#test span').replaceWith('<span>' + myMonthName + '</span>')
});
countemonth++;
myMonthName = months[countemonth];
var monthNameElement = $('#test span');

$('#addone').on('click', function () {
    alert('fred');
    countemonth++;

    // Now will work!
    var myMonthName = months[countemonth];
    monthNameElement.text(myMonthName);
});

请注意,最后一个建议可以避免浏览器两次查询同一元素!如果您像我在上面的示例中所展示的那样,当您需要多次使用同一个元素时,将引用存储在变量中并随处使用可能会大大加快您的网页速度

您的意思是每次单击都应该设置
myMonthName
变量吗

这句话

var myMonthName = months[countemonth];
…只有一次

摘要:每次调用click事件处理程序时,都需要设置整个变量

$('#addone').on('click', function () {
    alert('fred');
    countemonth++;

    // Now will work!
    var myMonthName = months[countemonth];

    $('#test span').replaceWith('<span>' + myMonthName + '</span>')
});
另外,为什么要更换
span

$(“#测试范围”)。替换为(“”+myMonthName+“”)

最后,您可以按如下方式存储jQuery对象:

var monthNameElement = $('#test span');
…然后在任何地方重用,甚至在单击处理程序中:

$('#addone').on('click', function () {
    alert('fred');
    countemonth++;
    var myMonthName = months[countemonth];        
    $('#test span').replaceWith('<span>' + myMonthName + '</span>')
});
countemonth++;
myMonthName = months[countemonth];
var monthNameElement = $('#test span');

$('#addone').on('click', function () {
    alert('fred');
    countemonth++;

    // Now will work!
    var myMonthName = months[countemonth];
    monthNameElement.text(myMonthName);
});

请注意,最后一个建议可以避免浏览器两次查询同一元素!如果您像我在上面的示例中所展示的那样,当您需要多次使用同一个元素时,将引用存储在变量中并随处使用可能会大大加快您的网页速度

问题是你主要是忘了排队

myMonthName = months[countemonth];
遵循完整的解决方案:

var newdate = new Date();
var getnewmonthword = newdate.getMonth();
var i = 0;
months = [];
months[0] = ('january');
months[1] = ('february');
months[2] = ('march');
months[3] = ('apri');
months[4] = ('may');
months[5] = ('june');
months[6] = ('july');
months[7] = ('august');
months[8] = ('september');
months[9] = ('october');
months[10] = ('november');
months[11] = ('december');
var countemonth = getnewmonthword;
var myMonthName = months[countemonth];

$('#test span').replaceWith('<span>' + myMonthName + '</span>')
$('#addone').on('click', function () {
    countemonth++;
    if (countemonth>=months.length) 
        countemonth = 0;

    myMonthName = months[countemonth];
    $('#test span').replaceWith('<span>' + myMonthName + '</span>')
});
var newdate=newdate();
var getnewmonthword=newdate.getMonth();
var i=0;
月份=[];
月[0]=(“一月”);
月[1]=(‘二月’);
月[2]=(‘三月’);
月[3]=('apri');
月[4]=(“五月”);
月[5]=(‘六月’);
月[6]=(“七月”);
月[7]=(“八月”);
月[8]=(‘九月’);
月[9]=(“十月”);
月[10]=(‘十一月’);
月[11]=(“十二月”);
var countemonth=getnewmonthword;
var myMonthName=月[数月];
$(“#测试范围”)。替换为(“”+myMonthName+“”)
$('#addone')。在('click',函数(){
countemonth++;
如果(countemonth>=月长)
countemonth=0;
myMonthName=月[数月];
$(“#测试范围”)。替换为(“”+myMonthName+“”)
});

问题是你主要是忘了排队

myMonthName = months[countemonth];
遵循完整的解决方案:

var newdate = new Date();
var getnewmonthword = newdate.getMonth();
var i = 0;
months = [];
months[0] = ('january');
months[1] = ('february');
months[2] = ('march');
months[3] = ('apri');
months[4] = ('may');
months[5] = ('june');
months[6] = ('july');
months[7] = ('august');
months[8] = ('september');
months[9] = ('october');
months[10] = ('november');
months[11] = ('december');
var countemonth = getnewmonthword;
var myMonthName = months[countemonth];

$('#test span').replaceWith('<span>' + myMonthName + '</span>')
$('#addone').on('click', function () {
    countemonth++;
    if (countemonth>=months.length) 
        countemonth = 0;

    myMonthName = months[countemonth];
    $('#test span').replaceWith('<span>' + myMonthName + '</span>')
});
var newdate=newdate();
var getnewmonthword=newdate.getMonth();
var i=0;
月份=[];
月[0]=(“一月”);
月[1]=(‘二月’);
月[2]=(‘三月’);
月[3]=('apri');
月[4]=(“五月”);
月[5]=(‘六月’);
月[6]=(“七月”);
月[7]=(“八月”);
月[8]=(‘九月’);
月[9]=(“十月”);
月[10]=(‘十一月’);
月[11]=(“十二月”);
var countemonth=getnewmonthword;
var myMonthName=月[数月];
$(“#测试范围”)。替换为(“”+myMonthName+“”)
$('#addone')。在('click',函数(){
countemonth++;
如果(cou