2014-02-20 120 views
0

我在任何函數之外創建了一個變量q。從我的函數內,我試圖用++來增加它。這會增加全局q還是僅僅將該值附加到局部變量?正如你可以在下面的代碼示例中看到的,我嘗試使用全局變量的值(我打算在每次執行此腳本期間更新該變量)設置一個變量,該變量應通過.change觸發此函數。該函數最初是觸發的(當q = 1時),但是當從id =「selectedId2」的下拉框中進行選擇時,它不會被觸發,這導致我相信儘管我已經成功地增加了q值當函數先前運行時。任何關於如何爲每個迭代的腳本增加變量「q」的建議都將不勝感激。爲什麼我不能增加全局變量

if (q === 1) { 
     selectedDiv = '#selectId1'; 
     selectedDiv2 = '#selectId2'; 
    } 
    if (q === 2) { 
     selectedDiv = '#selectedId2'; 
     selectedDiv2 = '#selectedId3'; 
    } 
    if (q === 3) { 
     selectedDiv = '#selectedId3'; 
     selectedDiv2 = '#selectedId4'; 
    } 
    if (q === 4) { 
     selectedDiv = '#selectedId4'; 
     selectedDiv2 = '#selectedId5'; 
    } 
    if (q === 5) { 
     selectedDiv = '#selectedId5'; 
     selectedDiv2 = '#selectedId6'; 
    } 

    $(selectedDiv).change(function() { 

     if (q == 1) { 
      var pullDownDivs = '#2'; 
     } 
     if (q == 2) { 
      var pullDownDivs = '#3'; 
     } 
     if (q == 3) { 
      var pullDownDivs = '#4'; 
     } 

     if (dropDownSelectJoined != null) { 
      var dropDownSelectJoined = dropDownSelectJoined + ", " + $(selectedDiv).val(); 
     } 
     else { 
      var dropDownSelectJoined = $(selectedDiv).val(); 
     } 


     var SelArea = $(selectedDiv).val(); 
     if (SelArea != 0) { 
      var url = '@Url.Action("NetworkSubForm")'; 
      q++; 
      $.post(url, { RemovedAreaId: $('#RemovedAreaId').val(), selectedNetworkId: $('#SelectedNetworkId').val(), dropDownSelectJoined: dropDownSelectJoined }, 
      function (data) { 
       var productDropdown = $(selectedDiv2); 
       productDropdown.empty(); 
       productDropdown.append("<option>-- Select Area --</option>"); 
       for (var i = 0; i < data.length; i++) { 
        productDropdown.append($('<option></option>').val(data[i].Value).html(data[i].Text)); 
       } 
      }); 
      $(pullDownDivs).show(); 
      $(pullDownDivs).html(); 
     } 
     else { 
      $(pullDownDivs).hide(); 
      $(pullDownDivs).html(); 
     } 
    }); 
+0

有沒有這樣的事情作爲一個jQuery變量。 jQuery是一個dom操作庫。 –

+0

@Benjamin Gruenbaum - 我知道jQuery是dom操作庫,我只是試圖更好地在這篇文章的標題中指定我的問題是關於什麼的。 – user3318152

+0

你在哪裏定義'q'?你能展示定義它的代碼嗎?你有沒有在函數的任何地方重新定義'q'? –

回答

0

我不知道你的代碼的其餘部分的樣子,但你可以看到這種行爲的原因是「陰影」:

var q = 0; //global "q" 
function handler() { 
    var q = 0; //local "q" that shadows the global "q"; 

    ... 
    ... 

    q++; 
    console.log(q); 
} 

一邊喊每次handler將輸出1因爲您正在handler之內重新定義本地q。但是,外部q保持不變。但是,如果你這樣做:

var q = 0; //global "q" 
function handler() { 
    var q = 0; //local "q" that shadows the global "q"; 

    ... 
    ... 

    window.q++; 
    console.log(window.q); 
} 

全球q將被更新,因爲你明確地做window.q引用它。

+0

重新查看代碼後,我意識到我做了一個真正的DUMB錯誤,我確信這是這個問題的原因......我拼錯了我設置變量的div名稱。即:'#selectedId2'應該是'#selectId2'。有一段時間我會對此感到尷尬。 – user3318152

+0

Vivin,謝謝你的幫助。雖然你的回答不是解決這個問題,因爲這是我愚蠢的結果,你的回答啓發了我,並很好地回答了我的問題,所以我標記了它。 – user3318152

相關問題