0

以下のコードを実装するより良い方法はありますか

<form id="myform" onsubmit="return saveUserData('firstname','lastname');" method="post">
function saveUserData() {
    createJSONString(arguments);
    return false;
}

function createJSONString(arguments) {
    var userDetails = "{";
    for (i = 0; i < arguments.length - 1; i++) {
        userDetails += '"' + arguments[i] + '":' + '"'     +document.getElementById(arguments[i]).value + '",';
    }
    userDetails += '"' + arguments[i] + '":' + '"' + document.getElementById(arguments[i]).value + "}";
    alert(userDetails);
}

基本的に、関数 saveUserData はフォーム送信ボタンから呼び出されます。そのため、パラメータを関数に渡し、JSON のような文字列を作成して、Chrome と Firefox の localStorage 変数に格納できるようにするという考え方です。アイデアは、OCP を失敗させることではありません。将来、ミドル ネームを追加した場合、JavaScript コードを変更する必要はなく、HTML だけが変更されるからです。これを実装するより良い方法はありますか?

ありがとう

4

1 に答える 1

1

json.stringify メソッドを使用して JSON 文字列を作成できます。json ライブラリを使用して、chrome と ff にこのメソッドが組み込まれています。

http://json.org/

まず、このようなデータの JavaScript オブジェクトを作成する必要があります。

var data = { 
    name : 'blu..',
    age  : 19
};

JSON.stringify(data);

// result is => "{"name":"blu..","age":19}"



function createJSONString(arguments) {
    var obj = {};     
    for (i = 0; i < arguments.length - 1; i++) {
        obj[arguments[i]] = document.getElementById(arguments[i]).value;
    }

    return JSON.stringify(obj);
};
于 2012-08-04T08:04:27.583 に答える