5

重複の可能性:
文字列を使用して JavaScript 関数名を呼び出しますか?
javascript 文字列から変数へ

私はこのコードを持っています:

var Functionify = function() {

    return {

        init: function(el, t) {
            var els = document.getElementsByClassName(el);
            var elsL = els.length;

            while(elsL--){
                //els[elsL].onclick = els[elsL].getAttribute(t);
                els[elsL].addEventListener('click', els[elsL].getAttribute(t), false);
            }
        }

    };

}();

どこel = 'myClassName'で、t = 'data-id'

't' は文字列ですが、関数名として 't' (文字列) を使用するように addEventListener 関数に指示するにはどうすればよいでしょうか?

4

4 に答える 4

7

グローバル名前空間では、次のようにします。

this.test = function() {
    alert('test');
}

window['test']();

ただし、より良いオプションは、関数をグローバル オブジェクトではなく、作成したオブジェクトのメソッドにすることですwindow

于 2012-07-30T23:48:06.467 に答える
1

関数がグローバルスコープの一部である場合は、ブラケット表記を使用できます。

window["stringName"]();
于 2012-07-30T23:44:02.647 に答える
1

eval() の使用は、特に Danila の例では「悪」と見なされます。JS のどの部分も eval() 内で実行できます。epascarello が述べた最良のオプションは、角括弧表記を使用して名前付き関数を呼び出すことです。ただし、windowt はグローバル名前空間で関数を呼び出すことに注意してください。関数がオブジェクトのメソッドである場合は、そのように参照する必要があります。

于 2012-07-30T23:50:15.960 に答える
0

eval() 関数を使用する

例:

a = "alert(1)"

eval(a)
于 2012-07-30T23:43:01.763 に答える