我试图通过传递从数据属性中拆分的KEY来获取数组/对象的值。
请看一下整个场景。
1st - 将data-*
传递给元素
<a data-action='{"content":"content.login"}' ... >val</a>
第二 - 获取数据属性值
var da = ele.data("action");
var c = da.content;
var c0 = c.split('.')[0];
var c1 = c.split('.')[1];
4th - array / obj
var content = {
login : "..."
};
3 - 尝试获取数组的val
console.log(c0[c1]);
结果 - undefined
有人可以给我解决方案,只需拨打content.login
即可记录c0[c1]
的确切值吗?
答案 0 :(得分:1)
您可以通过将变量传递给窗口来调用变量:window[c0][c1]
var content = {
login : "awesome"
};
var data = $('div').data('data');
var c = data.content;
var c0 = c.split('.')[0];
var c1 = c.split('.')[1];
console.log(c0, c1);
alert(window[c0][c1]);
// translates to window['content']['login'] => calls content.login
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div data-data='{"content":"content.login"}'></div>
注意:如果您处于功能关闭状态,则可以使用this
代替window
。
答案 1 :(得分:0)
您正在分配单个元素而不是数组:
var c0 = c.split('.')[0]; //Take 1st element of array
所以你不能尝试像你一样访问数组元素:
c0[c1]
只需打印c0。