javascript - 有没有办法通过变量从对象中获取信息?

标签 javascript jquery html

这是我第一次使用对象,所以我还在学习一点 JavaScript/jQuery。

我有一个函数,当我单击时,一个变量被设置为我单击的图像的类。我想要运行另一个函数来根据前一个变量编辑对象中的值。我知道我想做的事情看起来像这样:

marri.selected = 1;

我遇到的问题是这样的:

// in this case, let's say I clicked on one called 'marri'
character = $(".units a").attr("class");

// what I want this to read is 'marri.selected = 1' but as any name through the variable 'character'
character.selected = 1;

那么这可以通过其他方式实现吗?

最佳答案

我假设你实际上可能拥有多个 Angular 色。因此,在单个对象中维护字符列表可能是有意义的。每个 Angular 色的统计数据都是该对象的属性。这反过来又可以按照您想象的方式动态引用相关属性。

假设您有一个如下所示的 characters 对象:

var characters = { 
  "marri": { selected: 0},
  "someOtherCharacter": { selected: 0 }
}

您可以按照您所写的那样根据其类别获取 Angular 色:

characterName = $(".units a").attr("class");

(或者,如果您响应对该元素的点击,它实际上可能是 characterName = $(this).attr("class");。)

...然后使用该字符值通过 bracket notation 来引用对象中的属性:

characters[characterName].selected = 1;

演示:

var characters = {
  "marri": {
    selected: 0
  },
  "someOtherCharacter": {
    selected: 0
  }
}


$(function() {
  $(".units a").click(function(e) {
    e.preventDefault();
    characterName = $(this).attr("class"); //slightly different to the above example - this directly gets the class of the clicked link
    characters[characterName].selected = 1;
    console.log(characters); //just to show the object has been updated
  });



});
.units a
{
  padding: 5px;
  border: 1px solid #cccccc;
  margin: 1px;
}

.units a:hover
{
  cursor:pointer;
  background-color: #cccccc;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="units">
  <a class="marri">Marri</a>
  <a class="someOtherCharacter">Some Other Character</a>
</div>

关于javascript - 有没有办法通过变量从对象中获取信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60678194/

相关文章:

asp.net - 将版本号附加到 asp :ScriptManager's compositescript tag

javascript - 如何显示来自 li-objects 的特定 div?

html - polymer 数据绑定(bind) unicode

javascript - 如何在 angular.js 中进行自动数据更新?

html - 如何控制html窗口的大小?

html - 当代码看起来正确时 Webfonts 不工作

javascript - SVG 动画路径属性 "d"悬停时速度或 snap.svg

javascript - 正则表达式匹配具有确切标识符字符数的字符串

精确到秒的 Javascript 模糊时间(例如 '10 minutes ago')

javascript - 来自 Kendo 日期选择器的正则表达式日期字符串/值