1

次の Java スクリプト エラーが (断続的に) 発生します ”return” statement outside of function

以下は、私のjQueryコードで返される関数です。このコード パターンのどこが間違っているのだろうか? ある関数内の別の関数の呼び出しは問題ですか? 何かご意見は?

コード

function getSelectedParameters(parameterControl) {
    var selectedElements = $.map($(parameterControl + " option:selected"), function (el, i) {
        var code = getCode($(el).text());
        return code;
    });
    var parameter = selectedElements.join(",");
    if (isAnyParameterSelected == 0) {
        if (parameter.length > 0) {
            isAnyParameterSelected = 1;
        }
    }
    return parameter;
}
function getCode(selectedValue) {
    var firstIndex = selectedValue.lastIndexOf(":");
    var code = selectedValue.substring(0, firstIndex);
    return code;
}
4

4 に答える 4

1
Try this:
function getSelectedParameters(parameterControl) {
    var selectedElements = [];
    $.each($(parameterControl + " option:selected"), function (el) {
        selectedElements.push(getCode($(el).text()));
    });
    if (isAnyParameterSelected == 0 && selectedElements.length > 0) {
       isAnyParameterSelected = 1;
    }
    return selectedElements.join(",");
}
于 2013-10-04T17:10:49.840 に答える
1

あなたの構文に問題はありませんが、この背後には常に何らかの奇妙な根本的な問題がある可能性があります. 内部匿名関数から戻り値を削除しているため、おそらくこのアプローチが機能する可能性があります。おそらく、それが return ステートメントと競合しているためです。私は 1 年前にこのような同様の問題を抱えていました。以下は使用できる回避策です。

function getSelectedParameters(parameterControl) {
    var selectedElements = new Array();
    $.map($(parameterControl + " option:selected"), function (el, i) {
        selectedElements = getCode($(el).text());
        return false; //edit this to make it false
    });
    var parameter = selectedElements.join(",");
    if (isAnyParameterSelected == 0) {
        if (parameter.length > 0) {
            isAnyParameterSelected = 1;
        }
    }
    return parameter;
}
function getCode(selectedValue) {
    var firstIndex = selectedValue.lastIndexOf(":");
    var code = selectedValue.substring(0, firstIndex);
    return code;
}

私がやっていることは、$.map 値から戻り値を削除し、false として返すようにすることです。同時に、$.map 内で外部変数 selectedElements に割り当てます。

多分これは正しい方向にあなたを助けるか導くでしょう。私はこのコードに少し不安です:

selectedElements = getCode($(el).text());

SR5 によって提案されたプッシュ方式を実行できるかもしれません。

$.each($(parameterControl + " option:selected"), function (el) {
    selectedElements.push(getCode($(el).text()));
});

これから新しい配列を作成しようとしていると思いますか? ここでもっと一緒に仕事ができたらいいのに..

私の回答に賛成票を投じて、$.each で SR5 のプッシュ メソッドを使用した場合は、SR5 にも賛成票を投じてください:-p

于 2013-10-04T19:53:00.953 に答える
0

すべての答えのおかげで...

別のスクリプトを削除してもエラーは発生しません - href="javascript:return void(0);". そこが問題だったんだろう

以下より。

  <a href="javascript:return void(0);" id="MoveSelectedItems" class="k-button">
    <img src="~/Images/move.png" height="18" width="18" /> 
    Move 
  </a>
于 2013-10-04T21:25:59.663 に答える