2017-10-12 74 views
0

我如何調用該函數:的OnClick只有作品「曾經」

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

您的瀏覽器控制檯中是否有任何錯誤? –

+1

你可以請創建一個jsfiddle或一個片段? –

+0

沒有錯誤,我會創建它。 – dracarons

回答

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 }; 
    } 
} 
0

numselected似乎是一個全局變量,因此被所有div共用。

您必須爲每個div存儲專用值。

0

您的變量numSelected很可能永遠不會被重置,並且比您想象的要高。你在這增加它,但它是所有按鈕的相同值。所以在第三次點擊時,無論按下按鈕,if(numSelected <= 2){都失敗。