我如何调用该函数:
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次点击后,无效。
答案 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){
都会失败。