Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将变量从一个函数传递到另一个函数_Javascript_Jquery - Fatal编程技术网

Javascript 如何将变量从一个函数传递到另一个函数

Javascript 如何将变量从一个函数传递到另一个函数,javascript,jquery,Javascript,Jquery,变量“url”在click函数中未定义,但在buildUrl函数中可用 html: 删除var url=“abc.com?”+carsIds中的var var关键字创建了一个新的url,它在本地范围内是buildUrl函数的作用域。如果您关闭var,您将分配到您在外部范围中声明的url function buildUrl(){ var carIds = $( "input[type=checkbox]:checked" ).serialize(); url = "abc.

变量“url”在click函数中未定义,但在buildUrl函数中可用

html:


删除
var url=“abc.com?”+carsIds中的
var

var
关键字创建了一个新的
url
,它在本地范围内是
buildUrl
函数的作用域。如果您关闭
var
,您将分配到您在外部范围中声明的
url

function buildUrl(){
      var carIds = $( "input[type=checkbox]:checked" ).serialize();
      url = "abc.com?" + carsIds;
      console.log('url', url);
};
然而,像这样在自己的范围之外修改变量的函数通常会导致代码更难遵循,特别是当它不是已知设计模式的一部分时

您似乎还想立即更新按钮的
href
,而不是等待有人单击它。我建议您将代码简化为:

$(document).ready( function ( ) {

    // Listen to change event
    $( '.selected-cars input[type=checkbox]' ).change( function ( ) {

        var carIds = $( "input[type=checkbox]:checked" ).serialize();
        var url = "abc.com?" + carsIds;

        // Update button href
        $( '.button' ).attr( 'href', url );

    });

});
如果您想使用
buildUrl
函数,以便在其他地方调用它,则让它返回url,而不是从外部作用域分配给变量:

$(document).ready( function ( ) {

    // Listen to change event
    $( '.selected-cars input[type=checkbox]' ).change( function ( ) {

        var url = buildUrl();

        // Update button href
        $( '.button' ).attr( 'href', url );

    });

    function buildUrl ( ) {
        var carIds = $( "input[type=checkbox]:checked" ).serialize();
        return "abc.com?" + carIds;
    }

});

删除
var url=“abc.com?”+carsIds中的
var

var
关键字创建了一个新的
url
,它在本地范围内是
buildUrl
函数的作用域。如果您关闭
var
,您将分配到您在外部范围中声明的
url

function buildUrl(){
      var carIds = $( "input[type=checkbox]:checked" ).serialize();
      url = "abc.com?" + carsIds;
      console.log('url', url);
};
然而,像这样在自己的范围之外修改变量的函数通常会导致代码更难遵循,特别是当它不是已知设计模式的一部分时

您似乎还想立即更新按钮的
href
,而不是等待有人单击它。我建议您将代码简化为:

$(document).ready( function ( ) {

    // Listen to change event
    $( '.selected-cars input[type=checkbox]' ).change( function ( ) {

        var carIds = $( "input[type=checkbox]:checked" ).serialize();
        var url = "abc.com?" + carsIds;

        // Update button href
        $( '.button' ).attr( 'href', url );

    });

});
如果您想使用
buildUrl
函数,以便在其他地方调用它,则让它返回url,而不是从外部作用域分配给变量:

$(document).ready( function ( ) {

    // Listen to change event
    $( '.selected-cars input[type=checkbox]' ).change( function ( ) {

        var url = buildUrl();

        // Update button href
        $( '.button' ).attr( 'href', url );

    });

    function buildUrl ( ) {
        var carIds = $( "input[type=checkbox]:checked" ).serialize();
        return "abc.com?" + carIds;
    }

});

但您从未设置url。像
url=conquestUrl
buildUrl
中的某个
var url
将外部
var url
隐藏起来,这就是为什么在
处理程序中看不到值(
abc.com…
)的原因。如果我删除了var url;问题仍然存在:(否,不要在那里删除它!保留最上面的一个,并从函数
buildUrl
中删除
var
,这样它就使用以前定义的函数,而不是创建一个新的函数,当函数执行完后,它将被销毁,但您永远不会设置url。例如
url=conquestur;
或其他
var-url
>在
buildUrl
中,外部
var url
会被阴影遮挡,这就是为什么您无法在
中看到值(
abc.com…
)的原因。单击
处理程序。如果我删除了var url,问题仍然存在:(否,不要在那里删除它!保留最上面的一个,并从函数
buildUrl
中删除
var
,因此它使用前面定义的函数,而不是创建一个在函数完成时将被销毁的新函数executing@ShoaibUd-Din在单击按钮之前,您也没有更新按钮的
href
。I posted发布了一个简化版本,每次复选框切换时更新
href
。@ShoaibUd Din您也没有更新按钮的
href
,直到它被单击。我发布了一个简化版本,每次复选框切换时更新
href