0
function checkData() {
    var temp = 0;
    var totalMarks = countMark(temp);
    if (totalMarks != 100)
        window.alert("Marks must total 100");
}

function countMark(mark) {
    var totalMark = 0;
    totalMark += parseInt(mark)
    return totalMark;
}

function doAdd() {
    var taskid = document.getElementById("taskid").value;
    var taskname = document.getElementById("taskname").value;
    var taskmark = document.getElementById("taskmark").value;

    if (taskid.length === 0)
        window.alert("Task Id cannot be empty!");
    if (taskname.length === 0)
        window.alert("Task name cannot be empty!");
    if (taskmark.length === 0)
        window.alert("Task Mark cannot be empty!");
    else if (!markpattern.test(taskmark))
        window.alert("Invalid data in mark field");

    var marks = parseInt(document.getElementById("taskmark"));
    if (marks < 0 || marks > 100)
        window.alert("Marks out of range. Please re-enter");
    countMark(marks);
}

私の質問は、doAdd() 関数を呼び出し続けるときです。私のマークは追加し続けます。C++ のように参照を渡すようにしたい。私の関数 countMark(...) は追加し続けます。

その後、フォームが送信されると、フォームは関数 checkData() If my totalmark is not 100 を呼び出します。アラートとエラーが表示されます。

しかし、私のコードは機能していません。私のcountMark関数がどこかで間違っていると思います

4

2 に答える 2

0

私があなたを正しく理解していれば、静的変数に相当するものを探しています-関数が最初に呼び出されたときに初期化され、その後の呼び出しのためにその値を保持するもの。

この関連する質問を見てください: https://stackoverflow.com/a/1535650/2444111

一番の答え (CMS による) は、クラスベースの静的変数について話しているもので、まったく同じものではありません。

2 番目の回答 (Pascal MARTIN による) は、探しているものです。JS 関数もオブジェクトであるという事実を利用して、関数オブジェクトのプロパティとして変数を格納します。これは、グローバル変数 (または実際のグローバル変数である window のプロパティ) を使用するよりも優れたソリューションです。

于 2013-06-15T08:40:49.067 に答える