При попытке захватить значения из варов, которые глобально определены в рамках другой функции, я все время становлюсь неопределенным, но я понимаю, что глобальные вары работают между функциями.
Я хотел бы иметь возможность получить значения var в пределах основной функции щелчка и использовать их в функции nu() без повторного использования
var itemtitle= $ ("input # add_item_item_title"). val();
чтобы определить другое время.
Я был уверен, что это возможно, но, возможно, я что-то упустил.
JS/JQ
$(document).ready(function(){
init();
});
function init() {
$(function() {
$('.error').hide();
$(".add_item_btn").click(function() {
// validate and process form here
$('.error').hide();
var itemTitle = $("input#add_item_item_title").val();
if (itemTitle == "") {
$("label#add_item_item_title_error").show();
$("input#add_item_item_title").focus();
return false;
}
//add_item();
nu();
return false;
});
});
}
function nu(){
// when using this the var is defined but would rather not have to reuse this//
var itemTitle = $("input#add_item_item_title").val();
/////////////////////////////////////////////////////////////////////
var url = "script.php";
$.ajax({
type: 'POST',
url: url,
dataType: 'html',
data: {
itemTitle: itemTitle,
groupID: groupID,
unitPrice: unitPrice
},
beforeSend: function() {
document.getElementById("message").innerHTML="<span class='blink_me'>Sending..</span>" ;
},
success: function(html) {
document.getElementById("message").innerHTML=itemTitle;
}
});
}
Удалите var
в вашей декларации переменной.
Уточнение: вы определяете эту переменную с var, поэтому она доступна только в пределах этой функции и любых функций, определенных непосредственно внутри нее. Если вы просто используете myVar = 15;
(без var
) переменная будет определена в глобальной области. В браузере это эквивалентно использованию window.myVar = 15
.
Дальнейшее разъяснение: использование глобальных переменных обычно означает, что вы делаете то, чего не должно быть. Я не пурист, но у меня такое чувство, что многие будут плакать. Вы рискуете переназначить эту глобальную переменную на другое значение до того, как была вызвана функция обратного вызова - это может быть болью в прикладе, чтобы отлаживать такие проблемы.
В вашем примере, почему бы просто не передать переменную функции, например nu(itemTitle);
:
function nu(itemTitle){
/* blah blah blah */
/*
* itemTitle is now available here and directly
* in any functions that are defined in this
* part of the code
*/
}
$(document).ready(function(){});