0

アクションに対応するオプションを含む選択 (ドロップダウン リスト) があります。各アクションは、select の変更イベントで呼び出される汎用 JavaScript 関数に対応しています。したがって、次のようになります。

<select id="id-select-action" class="select-action right" value="Actions">
            <option class="select-title">Actions</option>
            <optgroup label="General Actions">
                <option value="load_new_page('/url/to/new/page')">create a foo</option>
                <option value="load_cbox('/url/to/cbox/contents')">manage tags</option>
            </optgroup>
</select>

私のサーバー コードは、各オプションの値の文字列 (アクションの動作と表示方法に応じて JavaScript 関数の呼び出し) を動的に生成し、サーバーはパラメーター (ビューへの URL) も動的に生成します。

オプションの値文字列でjavascript関数を呼び出したい、選択の変更イベントにjqueryリスナーがあります。

$("#id-select-action").change(function() {
    function_call = $("#id-select-action option:selected").val();
    //How do I execute the function_call?

});

誰もが eval() を嫌うようです。. . しかし、これは適切なケースですか、それとも何か他のことをすべきですか? 私はこのHow to turn a String into a javascript function call?を見ました。. . . ただし、その中には、パラメーターを含む完全な関数呼び出し文字列ではなく、処理する名前しかありません。

私がこのようにしている理由は、アプリケーションの特定のタイプのビューの一般的なフレームワークを作成しており、ページごとにアクションが異なる (URL が異なる、および/または異なる JavaScript 関数を呼び出す) 可能性があるためです。 .

ありがとう!

4

2 に答える 2

1

eval が役立つと思います..状態で。

http://www.w3schools.com/jsref/jsref_eval.asp

ただし、eval と check 条件の使用には注意してください。

于 2011-08-10T09:20:51.677 に答える
0

この fn を使用して、文字列から fn を作成します

 function createFunctionFromString(fnName, noOfParameters) {
        var _params = [];
        for (i = 0; i < noOfParameters; i = i + 1) {
            _params.push("p" + (i + 1));
        }
        var _fn = fnName ? new Function(_params.toString(","), "return " + fnName + "(" + _params.toString(",") + ");") : null;
        _params.length = 0;
        return _fn;
    }

// ここで、変更イベントで上記の fn を使用します

var convertedFn=createFunctionFromString($("#id-select-action option:selected").val(),'SomeInteger');


convertedFn();

http://jsfiddle.net/praveen_prasad/fk8fh/

于 2011-08-10T09:20:36.683 に答える