是否可以将e.target.property转换为值并使用它来引用对象?

时间:2017-11-19 02:25:30

标签: javascript

下面的简化代码不起作用,但我希望它有助于阐明我正在测试的想法。

e.target.id返回启动函数调用的id的名称。在这种情况下,它是id target。由于target也是一个对象,我想也许我可以在target对象中引用一个键。在这种情况下.name。结构化这根本不起作用。在将其用作参考之前,是否需要处理e.target.id?这有可能吗?

1)我知道这可能会被归类为最差的做法。

2)我正在测试我能推动JS的程度。

'use strict';

var target = {
  name: 'it worked'
}

document.getElementById('target').addEventListener('click', myFunction);

function myFunction(e) {
  alert(e.target.id.name);  //dies right here
}
<div id="target"></div>

1 个答案:

答案 0 :(得分:2)

您可以使用evalwindow[e.target.id]提及的@Slai执行此操作。

小心eval: Why is using the JavaScript eval function a bad idea?

var target = {
  name: 'it worked'
}

document.getElementById('target').addEventListener('click', myFunction);

function myFunction(e) {
  //alert(eval(e.target.id).name);  
  alert(window[e.target.id].name);
}
<div id="target">div</div>