从函数获取变量到另一个javascript

时间:2018-06-19 07:10:04

标签: javascript

我试图将变量的值从一个函数传递给另一个函数

function changeParent(){
    $(document).ready(function(){
        $('a').on('click',function() {
            var x = $(this).attr('id');
            var y = $(this).attr('name');
            $.ajax({
                type: 'POST',
                url: 'http://test.local/Family.php?action=getId',
                data: {'childId' : y},
                success: function(msg) {
                    document.getElementById('names').value = x;
                    msg = x ;
                }
            });
        });
    });
}

从第一个函数

调用msg的第二个函数
$(document).ready(function(){
    $('#saveId').on('click',function() {
        alert(msg);        
    });
});

我试过

alert(window.msg);

但它没有获得msg中的最后一个值。我怎么能通过它?

3 个答案:

答案 0 :(得分:3)

在两个函数之外声明一个变量'范围。成功回调函数中有msg,因此当您调用msg = x时,它实际上将x分配给该引用。

var message;

function changeParent(){
   $(document).ready(function(){
        $('a').on('click',function() {
            var x = $(this).attr('id');
            var y = $(this).attr('name');
            $.ajax({
                type: 'POST',
                url: 'http://test.local/Family.php?action=getId',
                data: {'childId' : y},
                success: function(msg) {
                    document.getElementById('names').value = x;
                    message = x ;
                }
            });
        });
    });
}

$(document).ready(function(){
    $('#saveId').on('click',function() {
        alert(message);        
    });
});

这样,变量message可用于两个函数。

答案 1 :(得分:1)

msg的作用域是第一个文档就绪函数,第二个函数不可用。

<button id="btn1">
Button 1
</button>

<button id="btn2">
Button 2
</button>

注意msg1仅在第一个文档就绪函数中定义,但msg2是全局定义的(不在函数内)。按钮1不会工作,按钮2会在最后检查小提琴。

var msg2
$(document).ready(function(){
  var msg1 = "Hello World"
  msg2 = "Goodbye World"

})

$(document).ready(function(){

  $("#btn1").on("click", function(e) {
    e.preventDefault()
        alert(msg1)
  })
  $("#btn2").on("click", function(e) {
    e.preventDefault()
        alert(msg2)
  })
})

小提琴:http://jsfiddle.net/tnj4yLeg/3/

答案 2 :(得分:1)

问题是消息。你成功回调的msg只是局部变量,也很奇怪:

success: function(msg) {
     document.getElementById('names').value = x;
     msg = x ;
  }

//没意义! msg是回调函数的arg

制作全局变量:

var Message  = '';

介绍成功:

Message = msg;