为什么这个函数在控制台中返回undefined而不是loggin?

时间:2015-10-12 12:18:41

标签: javascript jquery function console.log



function getIcon(id) {
    var icons = {
     'i8' : 'nachos1',
     'i4' : 'eggs',
     'i6': 'glass2',
     'i5': 'drink',
     'i1': 'starter',
     'i2': 'steak',
     'i3': 'ice-cream2',
     'i10': 'carrot',
     'i9': 'bread',
     'i7': 'pizza',
     'i11' : 'salad'
  };
  console.log('getIcon'); /* Wont happen */
  return 'icon-'+icons[id]; 
}

$app = {
  init: function() {
    $el = $('div.el');
    console.log($el.data('id')); /* i5 */
    var icon = getIcon[$el.data('id')];
    console.log(icon); /* undefined */
    $el.text(icon);
  }
}
$(function(){
  $app.init();
})

div {
  border: 1px solid;
  display:inline-block;
  margin:50px;
  height: 40px;
  min-width: 200px;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
(it should be 'icon-drink')
<div class="el" data-id="i5"></div>
&#13;
&#13;
&#13;

我正在尝试根据id

获取图标类

但执行此操作的函数还是未定义的,它不会登录控制台,

知道我错过了什么吗?

3 个答案:

答案 0 :(得分:1)

交换括号的方括号:

getIcon[$el.data('id')]应为getIcon($el.data('id'))

方括号用于物业访问;括号用于函数调用。

答案 1 :(得分:1)

getIcon不是数组/对象,但您可以这样引用它:

getIcon[$el.data('id')]

将其更改为

getIcon($el.data('id'))

答案 2 :(得分:1)

将方括号交换为圆形支架

getIcon[$el.data('id')]

更改为

getIcon($el.data('id'))