簡體   English   中英

jQuery:如何使用函數的返回值到另一個函數

[英]jQuery: How to use the return value from a function to another function

我有這個jquery腳本。 我想使用函數stockArt()的返回值到函數prod_actname() 看來我錯過了什么或者我的實現是錯誤的。 我怎么可能那樣做?

另一種情況是,當StockArt()值更改時,活動名稱也必須更新。

說股票藝術顏色是綠色。 並且活動名稱顏色也會更新為綠色,而不從prod_actname()函數中選擇綠色。 當StockArt顏色也發生變化時,它會自動更改。 它們必須是相同的顏色。

jQuery( document ).ready(function($) {
$('#preview_design').css("background-color","black");
$('#stock_art').change(function() {     
    var retVal = stockArt();
    $('#prod_actname').data("stockData", retVal);     
});

$('#prod_actname').change(function() {      
   var stockData = $('#prod_actname').data("stockData");
    prod_actname(stockData);
}); 


function stockArt()
{

    var returnValue = null;
    var selectStock_Art = $('#stock_art :selected').val();

        if(selectStock_Art == '31145-RB-emb')       
            { // green
                $('#stockArt_img').removeClass().addClass('stock_art_grbg1');           
            }
        else if(selectStock_Art == '33441-RB-emb1') 
            { // yellow
                $('#stockArt_img').removeClass().addClass('stock_art_yebg2');   
            }
        else if(selectStock_Art == '33441-RB-emb2') 
            { // gold
                $('#stockArt_img').removeClass().addClass('stock_art_gobg3');
            }
        else {
                $('#stockArt_img').removeClass();
            }

    returnValue = selectStock_Art;

return returnValue;

}


function prod_actname(stockData){

var StockArtResult = stockData;
    //User stockData as needed
    // assign the value to a variable, so you can test to see if it is working
    var selectActivity_Name = $('#prod_actname :selected').val();
    //alert(selectActivity_Name);

    if(selectActivity_Name == 'Baseball')
        {   
            $('#activityName_img').removeClass();

            if(stockArtValue == '31145-RB-emb'){

                $('#activityName_img').addClass('activity_name_GRbg1');
            }
            else if(stockArtValue == '33441-RB-emb1'){
                $('#activityName_img').addClass('activity_name_YEbg1');

            }else if(stockArtValue == '33441-RB-emb2') {
                $('#activityName_img').addClass('activity_name_GObg1');

            }

        }
    else if(selectActivity_Name == 'Basketball')
        {
            $('#activityName_img').removeClass();

            if(stockArtValue == '31145-RB-emb'){

                $('#activityName_img').addClass('activity_name_GRbg2');
            }
            else if(stockArtValue == '33441-RB-emb1'){
                $('#activityName_img').addClass('activity_name_YEbg2');

            }else if(stockArtValue == '33441-RB-emb2') {
                $('#activityName_img').addClass('activity_name_GObg2');

            }

        }
    else if(selectActivity_Name == 'Boys Basketball')
        {
            $('#activityName_img').removeClass();

            if(stockArtValue == '31145-RB-emb'){

                $('#activityName_img').addClass('activity_name_GRbg3');
            }
            else if(stockArtValue == '33441-RB-emb1'){
                $('#activityName_img').addClass('activity_name_YEbg3');

            }else if(stockArtValue == '33441-RB-emb2') {
                $('#activityName_img').addClass('activity_name_GObg3');
            }

        }
    else if(selectActivity_Name == 'Girls Basketball')
    {
        $('#activityName_img').removeClass();

        if(selectStock_Art == '31145-RB-emb'){

            $('#activityName_img').addClass('activity_name_GRbg4');
        }
        else if(selectStock_Art == '33441-RB-emb1'){
            $('#activityName_img').addClass('activity_name_YEbg4');

        }else if(selectStock_Art == '33441-RB-emb2') {
            $('#activityName_img').addClass('activity_name_GObg4');
        }

    }   

}

});

使用data屬性存儲“#prod_actname”的數據,然后再訪問它。 你可以利用jQuery.data 嘗試這個

jQuery( document ).ready(function($) {
    $('#preview_design').css("background-color","black");
    $('#stock_art').change(function() {     
        var retVal = stockArt();
        $('#prod_actname').data("stockData", retVal);     
    });

    $('#prod_actname').change(function() {      
       var stockData = $('#prod_actname').data("stockData");
        prod_actname(stockData);
    }); 


    function stockArt()
    {

        var returnValue = null;
        var selectStock_Art = $('#stock_art :selected').val();

            if(selectStock_Art == '31145-RB-emb')       
                { // green
                    $('#stockArt_img').removeClass().addClass('stock_art_grbg1');           
                }
            else if(selectStock_Art == '33441-RB-emb1') 
                { // yellow
                    $('#stockArt_img').removeClass().addClass('stock_art_yebg2');   
                }
            else if(selectStock_Art == '33441-RB-emb2') 
                { // gold
                    $('#stockArt_img').removeClass().addClass('stock_art_gobg3');
                }
            else {
                    $('#stockArt_img').removeClass();
                }

        returnValue = selectStock_Art;

    return returnValue;

    }

    var stockArtValue = stockArt();

    function prod_actname(stockData){
        //User stockData as needed
        // assign the value to a variable, so you can test to see if it is working
        var selectActivity_Name = $('#prod_actname :selected').val();
        //alert(selectActivity_Name);

        if(selectActivity_Name == 'Baseball')
            {   
                $('#activityName_img').removeClass();

                if(stockArtValue == '31145-RB-emb'){

                    $('#activityName_img').addClass('activity_name_GRbg1');
                }
                else if(stockArtValue == '33441-RB-emb1'){
                    $('#activityName_img').addClass('activity_name_YEbg1');

                }else if(stockArtValue == '33441-RB-emb2') {
                    $('#activityName_img').addClass('activity_name_GObg1');

                }

            }
        else if(selectActivity_Name == 'Basketball')
            {
                $('#activityName_img').removeClass();

                if(stockArtValue == '31145-RB-emb'){

                    $('#activityName_img').addClass('activity_name_GRbg2');
                }
                else if(stockArtValue == '33441-RB-emb1'){
                    $('#activityName_img').addClass('activity_name_YEbg2');

                }else if(stockArtValue == '33441-RB-emb2') {
                    $('#activityName_img').addClass('activity_name_GObg2');

                }

            }
        else if(selectActivity_Name == 'Boys Basketball')
            {
                $('#activityName_img').removeClass();

                if(stockArtValue == '31145-RB-emb'){

                    $('#activityName_img').addClass('activity_name_GRbg3');
                }
                else if(stockArtValue == '33441-RB-emb1'){
                    $('#activityName_img').addClass('activity_name_YEbg3');

                }else if(stockArtValue == '33441-RB-emb2') {
                    $('#activityName_img').addClass('activity_name_GObg3');
                }

            }
        else if(selectActivity_Name == 'Girls Basketball')
        {
            $('#activityName_img').removeClass();

            if(selectStock_Art == '31145-RB-emb'){

                $('#activityName_img').addClass('activity_name_GRbg4');
            }
            else if(selectStock_Art == '33441-RB-emb1'){
                $('#activityName_img').addClass('activity_name_YEbg4');

            }else if(selectStock_Art == '33441-RB-emb2') {
                $('#activityName_img').addClass('activity_name_GObg4');
            }

        }   

    }

});

一種方法是將stockArt()的輸出存儲在變量中,然后將其作為參數傳遞給prod_actname()。 為此,您需要修改prod_actname()函數的函數簽名以接受參數。 像這樣的東西

var stockArtValue;
$('#stock_art').change(function() {     
    stockArtValue = stockArt();     
});

$('#prod_actname').change(function() {      
    prod_actname(stockArtValue);
}); 

function prod_actname(val){

 ....

}

對於某些情況,考慮到stockArtValue變量確實已被更改可能是有用的。 您通常可以使用另一個狀態變量來指示。 或者,如果您知道可能的輸入值集,則使用該輸入值集之外的值對其進行初始化並檢查它。

您可以將其值保存在屬性中......

jQuery( document ).ready(function($) {

var StockArtResult = null;

$('#stock_art').change(function() {     

    StockArtResult = stockArt();     
});

$('#prod_actname').change(function() {      

   if(StockArtResult != null)
   {        
       prod_actname(StockArtResult);
   }
});

});

暫無
暫無

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

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