2016-07-28 77 views
2

我想使用jQuery val()函數設置輸入(表單中的隱藏輸入)的值屬性。我的想法是連接變量的名稱並將其作爲參數傳遞給該函數,但它不起作用。有問題的代碼是在最後一行:將變量連接爲jQuery val()參數?

$(document).ready(function(){ 

    var hash = document.location.hash; 
    var turismosSid = "1c0f8e3ec28b09f9487140930a0c0b73"; 
    var comercialesSid = "b31150acd348f775785b7c4a7398a3c6"; 

    if (hash === "#turismos") { 
     activaTab("turismos"); 
     $('#js-sid').val(turismosSid); 
    } else { 
     activaTab("comerciales"); 
     $('#js-sid').val(comercialesSid); 
    } 

    $('#js-turismos-btn').on('click', function(){ 
     activaTab("turismos"); 
     document.location.hash = "turismos"; 
    }); 

    $('#js-comerciales-btn').on('click', function(){ 
     activaTab("comerciales"); 
     document.location.hash = "comerciales"; 
    }); 


    function activaTab(cual){ 
     $('#js-turismos-btn').addClass('bg-faded'); 
     $('#js-turismos').hide(); 
     $('#js-comerciales-btn').addClass('bg-faded'); 
     $('#js-comerciales').hide(); 

     $('#js-'+ cual + '-btn').removeClass('bg-faded');  
     $('#js-'+ cual).fadeIn(300); 

     $('#js-sid').val(cual + "Sid"); 
    } 

}); 

而不是設置輸入的價值,無論對變量的turismosSid或comercialesSid,功能設定值作爲STRING turismosSid或comercialesSid。我究竟做錯了什麼?

回答

2

不幸的是,你不能通過字符串連接*引用變量。

要做你需要的東西,你可以把turismosSidcomercialesSid的值放到一個對象中,然後你可以使用你連接在一起的字符串引用該對象的鍵。試試這個:

var sids = { 
    turismosSid: "1c0f8e3ec28b09f9487140930a0c0b73", 
    comercialesSid: "b31150acd348f775785b7c4a7398a3c6" 
} 

if (hash === "#turismos") { 
    activaTab("turismos"); 
    $('#js-sid').val(sids.turismosSid); 
} else { 
    activaTab("comerciales"); 
    $('#js-sid').val(sids.comercialesSid); 
} 

// in activaTab() 
$('#js-sid').val(sids[cual + "Sid"]); 

*您可以使用eval()但是我們認爲你可以在JS代碼可能使用的最糟糕的事情,所以我只能將其納入本說明的完整性的緣故。