3

私はjavascriptに次のコードを持っていますか?

if ($(form).data('action') == "Edit") {
  xx
} else if ($(form).data('action') == "Create"){
  xy
} else if ($(form).data('action') == "Delete"){
  xz
}

これを単純化して、デフォルトのパスを設定することはできますか?

4

8 に答える 8

10

アクションを含むオブジェクトを作成することもできます。

var Actions = {
    'Edit' : function () {},
    'Create' : function () {},
    'Delete' : function () {}
};

var action = $(form).data('action');

if (Actions.hasOwnProperty(action)) {
    Actions[action]();
}
于 2012-05-04T05:10:31.587 に答える
4

あなたが説明しているように聞こえるのはスイッチ/ケースですが、スイッチケースが複数のif/else構造よりも優れているとは思いません。私はオブジェクトハッシュを使用することを好みます:

var actionObj = {
  "Edit": xx,
  "Create": xy,
  "Delete": xz
};

if (actionObj[act]) {
  // do whatever with actionObj[act] you need to
} else {
  // do your default action
}

値が実際に関数である場合に特にうまく機能し、次のように呼び出すことができます。

var actionObj = {
  "Edit": function () {},
  "Create": function () {},
  "Delete": function () {}
};

if (actionObj[act]) {
  actionObj[act]();
} else {
  // default action
}
于 2012-05-04T05:12:23.047 に答える
3

それ以外の場合に複数を処理する場合は、Switchを使用します

switch(n)
{
case 1:
  execute code block 1
  break;
case 2:
  execute code block 2
  break;
default:
  code to be executed if n is different from case 1 and 2
}
于 2012-05-04T05:06:35.217 に答える
1

$(form).data('action');の結果をキャッシュする必要があります。例:

var action = $(form).data('action');

if (action === 'Edit') {
    //
} else if (action === 'Create') {
    //
} else if (action === 'Delete') {
    //
}
于 2012-05-04T05:06:34.193 に答える
1

ブロックを使用するswitchのが最も一般的な方法です。

オブジェクトから実行する関数をルックアップすることもできます(ハッシュマップ)。

var actions = {
    Edit: function () {
        // xx
    },
    Create: function () {
        // xy
    },
    Delete: function () {
        // xz
    }
};

var action = actions[$(form).data("action")];

if (action) {
    action();
} else {
    // unknown/default action
}
于 2012-05-04T05:12:31.973 に答える
0

スイッチケースを使用:

var action = $(form).data('action')
switch(action)
{
case 'Edit': xx;
break;
case 'Create': yy;
break;
case 'Delete': zz;
break;
default: caption ="default";
}

または、三項演算子を使用できます(true?1:0)

于 2012-05-04T05:09:34.610 に答える
0
var Actions = {
    'Edit' : function () {},
    'Create' : function () {},
    'Delete' : function () {},
    'default': function () {}
},

action = $(form).data('action');
Actions[action]() || Actions[default]();
于 2014-11-13T08:51:33.573 に答える
-1

ここからCASEを試してください: http ://www.tutorialspoint.com/javascript/javascript_switch_case.htm

それらからの例:

<script type="text/javascript">
<!--
var grade='A';
document.write("Entering switch block<br />");
switch (grade)
{
   case 'A': document.write("Good job<br />");
            break;
   case 'B': document.write("Pretty good<br />");
            break;
   case 'C': document.write("Passed<br />");
            break;
   case 'D': document.write("Not so good<br />");
            break;
   case 'F': document.write("Failed<br />");
            break;
  default:  document.write("Unknown grade<br />")
}
document.write("Exiting switch block");
//-->
</script>
于 2012-05-04T05:08:03.143 に答える