当试图从另一个函数中全局定义的变量中获取值时,我一直未定义,但我理解全局变量在函数之间工作。
我希望能够在主要点击功能中获取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;
}
});
}
答案 0 :(得分:0)
删除变量声明中的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
*/
}