2017-11-19 7 views
0

下記の簡略化されたコードは機能しませんが、私がテストしているアイデアを照らすのに役立ちます。e.target.propertyを値に変換してオブジェクトを参照するのに使用できますか?

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

これはあなたの問題に対処しませんが、あなたは 'function'キーワードを忘れてしまいました。 – Neil

+0

'name'プロパティは' e.target.name'のように取得できます –

+0

私はそうは思わない。 'target 'を返すために' e.target.id'にする必要はありませんか? – DR01D

答えて

2

あなたはevalまたは@Slaiがwindow[e.target.id]で述べたようにこれを行うことができます。

は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>

+2

@ DR01D eval .. alert(ウィンドウ[e.target.id] .name) 'は必要ありません。ちょうどそれが重複した質問 – Slai

+0

@Slaiの答えであることに気付いたそうですよ! – Sun

関連する問題