我在任何函数之外创建了一个变量q。从我的函数内部,我试图简单地用++增加它。这会增加全局q还是只是将值附加到局部变量?正如您在下面的代码示例中所看到的,我试图使用全局变量的值(我打算在每次执行此脚本时更新)来设置一个应该通过.change触发此函数的变量。该函数最初是触发器(当q = 1时)但是当从id =“selectedId2”的下拉框中进行选择时它不会触发,这使得我认为q保留了值1,尽管我成功地增加了它当函数先前运行时。任何关于如何为此脚本的每次迭代增加变量“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 :(得分:0)
我不知道你的其余代码是什么样的,但是由于“阴影”你可以看到这种行为:
var q = 0; //global "q"
function handler() {
var q = 0; //local "q" that shadows the global "q";
...
...
q++;
console.log(q);
}
重复调用handler
每次都会输出1
,因为您要重新定义q
内的本地handler
。但是,外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
明确引用它。