在jQuery中使用值作为变量名

时间:2019-06-03 09:48:54

标签: javascript jquery

我有几个div ...

  <div id="foo"></div>
  <div id="bar"></div>

每个都有一个关联的jQuery数组。例如

var foo_array = ["One", "Two", "Three"];
var bar_array = ["Four", "Five", "Six"];

我要在单击div时提醒相关数组中的第一个值。

类似这样:

$(div).on("click",function(){
   $divid = $(this).attr("id");
   $firstval = ????_array[0];
   alert($firstval);
})

-代替????我动态地回显了$ divid的值。在PHP中很容易,但是我很困惑如何在javascript中做到这一点?

2 个答案:

答案 0 :(得分:3)

在较大的对象中定义数组,而不是使用多个独立变量,然后可以使用属性查找:

const divArrs = {
  foo: ["One", "Two", "Three"],
  bar: ["Four", "Five", "Six"]
}
$('div').on("click", function() {
  divid = $(this).attr("id");
  const firstval = divArrs[divid][0];
  console.log(firstval);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="foo">foo</div>
<div id="bar">bar</div>

当然,不需要jQuery这样的东西:

const divArrs = {
  foo: ["One", "Two", "Three"],
  bar: ["Four", "Five", "Six"]
};
document.querySelectorAll('div').forEach((div) => {
  div.onclick = () => {
    console.log(divArrs[div.id][0]);
  };
});
<div id="foo">foo</div>
<div id="bar">bar</div>

答案 1 :(得分:0)

可以在var对象中自动访问全局定义的window变量。

var foo_array = ["One", "Two", "Three"];
var bar_array = ["Four", "Five", "Six"];

const id = "foo";
console.log(window[`${id}_array`][0]);