将一个变量连接为jQuery val()参数

Concatenating a variable as the jQuery val() argument?

本文关键字:jQuery val 参数 连接 一个 变量      更新时间:2023-09-26

我正在尝试使用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");
    }
});

该函数没有将输入的值设置为变量turismosId或comercialsSid中的任何一个,而是将该值设置为STRING turismosSid或comercialesSid。我做错了什么?

遗憾的是,您无法通过字符串串联引用变量*。

要执行所需操作,可以将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代码中可能使用的最糟糕的东西,所以为了完整起见,我只在本说明中包含它。