OnClick仅适用于“一次”

时间:2017-10-12 21:48:00

标签: javascript html

我如何调用该函数:

function createHTML(){
...
monthDiv.setAttribute('onclick', 'onOptionSelected(`' + monthDiv.id + '`)');
....
}

-numSelected是可以选择div的时间。

function onOptionSelected(option) {
        if(numSelected <= 2){
            numSelected ++;
            console.log("NUMSELECTEED: " + numSelected);
            selectedMonths.push(option);
            if ($('#' + option + '').hasClass("unSelected")) {
                $('#' + option + '').removeClass("unSelected").addClass("selected");

            } else if ($('#' + option + '').hasClass("selected")) {
                $('#' + option + '').removeClass("selected").addClass("unSelected");

            }
        }
    }

选择3个div后,没有任何反应,“onclick”不起作用。

实际上,在任何方框中单击3次,相同的方框两次,无关紧要,经过3次点击后,无效。

3 个答案:

答案 0 :(得分:0)

你正在创建多个div(我假设在某种for循环中) 删除你拥有的“numSelected”全局变量声明,并尝试这样的事情:

var aNumSelected[];

function createHTML(){
    ...
    monthDiv.setAttribute('onclick', 'onOptionSelected(`' + monthDiv.id + '`)');
    aNumSelected.push({ id : monthDiv.id, numSelected : 0 });
    ....
}

function onOptionSelected(option) { 
    var numSelected;
    var i;
    for (i = 0; i < aNumSelected.length(); i++){
        if (aNumSelected[i].id == option){
            numSelected = aNumSelected[i].numSelected;
            break;
        }
    }

    if(numSelected <= 2){
        numSelected ++;
        console.log("NUMSELECTEED: " + numSelected);
        selectedMonths.push(option);
        if ($('#' + option + '').hasClass("unSelected")) {
            $('#' + option + '').removeClass("unSelected").addClass("selected");

        } else if ($('#' + option + '').hasClass("selected")) {
            $('#' + option + '').removeClass("selected").addClass("unSelected");    
        }

        aNumSelected[i] = { id: option, numSelected: numSelected };
    }
}

答案 1 :(得分:0)

numselected似乎是一个全局变量,因此被所有div共享。

您必须为每个div存储专用值。

答案 2 :(得分:0)

您的变量numSelected很可能永远不会被重置,并且范围比您想象的要高。你在此增加它,但它对所有按钮都是相同的值。因此,在第三次点击时,无论按下按钮,if(numSelected <= 2){都会失败。