簡體   English   中英

從另一個函數獲取javascript變量值

[英]Get javascript variable value from another function

我宣布第一。點擊功能的變量,但我的第二個。點擊我想獲得的第一個變量的值,但它沒能找到它,因為它在不同的功能之中。

如何設置全局變量或其他函數也可以使用該值的東西?

$('input[type="checkbox"]').click(function(){
    var checked = 0;
    if($(this).prop("checked") == true){
        var checked = 1
        console.log('checked');
        console.log(checked);
    }
    else if($(this).prop("checked") == false){
        var checked = 0
        console.log('not checked');
        console.log(checked);
    }
});
$('#button-cart').click(function(){
    if(checked == 1){
        alert('can continue fine');
    } else if(checked == 0){
        alert('cannot continue');
    }
})

錯誤: 未捕獲ReferenceError:未定義

為了避免污染全局范圍,最佳實踐是在閉包中聲明檢查的變量,以便只有事件處理程序才能訪問它。

(function() {
    var checked; // No one outside of this immediately invoked function can see the checked variable.
    $('input[type="checkbox"]').click(function(){
        checked = 0;
        if($(this).prop("checked") == true){
            checked = 1
            console.log('checked');
            console.log(checked);
        }
        else if($(this).prop("checked") == false){
            checked = 0
            console.log('not checked');
            console.log(checked);
        }
    });
    $('#button-cart').click(function(){
        if(checked == 1){
            alert('can continue fine');
        } else if(checked == 0){
            alert('cannot continue');
        }
    })
}());

這樣,您的兩個點擊處理程序都可以看到checked變量,但其他任何人都無法訪問它。

在函數外部聲明checked -這使其可以在全局范圍內訪問。 然后刪除函數內的var語句,否則您將在函數范圍內創建一個新變量。 該代碼將起作用:

var checked = 0;
$('input[type="checkbox"]').click(function(){
    if($(this).prop("checked") == true){
        checked = 1
        console.log('checked');
        console.log(checked);
    }
    else if($(this).prop("checked") == false){
        checked = 0
        console.log('not checked');
        console.log(checked);
    }
});
$('#button-cart').click(function(){
    if(checked == 1){
        alert('can continue fine');
    } else if(checked == 0){
        alert('cannot continue');
    }
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM