0

ボタンを処理するボタン「もの」を作ろうとしています。ボタンがクリックされたときにユーザー定義関数を呼び出す方法が必要です。ボタンとして選択される要素の例を次に示します。

<section class = 'button' buttonaction = 'aFunction()'></section>

したがって、ボタンがクリックされたときにaFunction()値を取得し、それを使用してその関数を呼び出すようにします。

例:

elem.onclick = function(){
    action = this.getAttribute('buttonaction');
    action();
}

この例が間違っていることは知っていますが、私がやりたいことを伝えていると思います。ありがとう、-マイケルミッチェル

4

4 に答える 4

2

次のように関数を設定できます。

var my_allowed_functions = {
    func1: function(arg1, arg) {
        alert(arg1 + arg2);
    },
    func2: function(arg1, arg) {
        alert(arg1 + arg2);
    }
};

そして、それらの1つを名前で呼び出すだけです。

my_allowed_functions['func1'].apply(this, argument_array);
于 2012-12-17T06:32:13.937 に答える
0

html:

<section class = 'button' buttonaction='aFunction'></section>

脚本 :

var aFunction = function(){};

var buttons = document.querySelectorAll(".button");

[].forEach.call(buttons,function(button){
 button.onclick = function(event){
  var ct = event.currentTarget;
  var func = ct.getAttribute("buttonaction");
  window[func]()

 }
}

ただし、実行 window[func]()する場合でも、スコープ評価を実行しています。

だから、なぜそうしないのですか?

<section class='button' onclick='aFunction()'></section>
于 2012-12-17T06:43:02.210 に答える
-1

別の方法がありwindowます:

<script type="text/javascript"><!--
//Create the function
var fn = function(){
  alert('ok');
};

//Call the function
var str = 'fn';
window[str]();
//-->
</script>
于 2012-12-17T06:40:27.113 に答える
-1

任意のコードを実行せずに任意のコードを実行する方法はありません。懸念されるのはセキュリティリスクですが、ユーザーが入力したコードを何らかの方法で実行するために名前がeval付けられた別の関数を使用した場合でも、それでも危険です。ponies

要件が要求evalするので、それを使用するか、要件を再考する必要があります。

于 2012-12-17T06:32:40.810 に答える