JS / Jquery中的全局变量在函数之间

时间:2014-03-19 17:54:04

标签: jquery variables global

当试图从另一个函数中全局定义的变量中获取值时,我一直未定义,但我理解全局变量在函数之间工作。

我希望能够在主要点击功能中获取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;

                }
    });

}

1 个答案:

答案 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
     */
}