У меня есть такая функция:
$(document).ready(function () {
$('.SelectID').click(function (e) {
var output;
var select = $(this);
switch (select.text()){
case "FirstOption":
var a = ("1");
break;
case "SecondOption":
var b = ("2");
break;
}
var output = [a|| b];
return output;
}
$(document).on("click", "#Soemthinhg", function () {
data1 = $('#something').val();
data2 = $(output).val();
AjaxMethod(data1, data2 )
});
});
Вопрос в том, что когда я запускаю код, он говорит 0x800a138f - ошибка времени выполнения JavaScript: невозможно получить свойство "toLowerCase" неопределенной или нулевой ссылки
Для этого вы можете использовать переменную с закрытой областью
$(document).ready(function () {
//declare it in a closure scope so that the global scope will not get polluted
var output;
$('.SelectID').click(function (e) {
var select = $(this);
switch (select.text()) {
case "FirstOption":
var a = ("1");
break;
case "SecondOption":
var b = ("2");
break;
}
output = [a || b];
})
$(document).on("click", "#Soemthinhg", function () {
data1 = $('#something').val();
//here use the closure variable
data2 = $(output).val();
AjaxMethod(data1, data2)
});
});
Использование глобальной переменной (не рекомендуется)
//declare the variable in global scope
var output;
$(document).ready(function () {
$('.SelectID').click(function (e) {
var select = $(this);
switch (select.text()) {
case "FirstOption":
var a = ("1");
break;
case "SecondOption":
var b = ("2");
break;
}
output = [a || b];
})
});
$(document).on("click", "#Soemthinhg", function () {
data1 = $('#something').val();
//here use the global variable
data2 = $(output).val();
AjaxMethod(data1, data2)
});
Вы указали выходную переменную внутри функции document.ready, она не будет доступна вне области видимости. Если вы хотите получить доступ к выходной переменной вне функции document.ready, объявите ее как глобальную переменную.
Вы можете объявить его как глобальную переменную типа var output;
вне любой функции
или внутри document.ready функционирует как window.output = [a | b]
window.output = [a | b]
$(document).ready(function () {
$('.SelectID').click(function (e) {
var select = $(this);
switch (select.text()){
case "FirstOption":
var a = ("1");
break;
case "SecondOption":
var b = ("2");
break;
}
window.output = [a|| b];
return output;
}
});
$(document).on("click", "#Soemthinhg", function () {
data1 = $('#something').val();
data2 = $(output).val();
AjaxMethod(data1, data2 )
});