-3

htmldom参照をjsoopに入れても大丈夫かどうか疑問に思っています。オンラインには多くのJSOOPチュートリアルがありますが、私が言及しているものに似たものは見たことがありません。以下のコードは私が参照しているものです。

var form = {
  fname : document.getElementById("fname").value;
};

たとえば、document.getElementById("fname").valueは「jacob」の値を持つテキストボックスです。だろうform.fname = "jacob"か?

これで大丈夫ですか?これは一般的な方法ですか?

4

2 に答える 2

0

ロードイベントの後にオブジェクトが作成された場合にそれを行うことができるので、要素「fname」が初期化されていることを確認できます...たとえば...

$(document).ready(function(){
   var form = {
     fname : document.getElementById("fname").value;
    };
});

jQueryを使用したくない場合は、別の例を示します...

window.addEvent('load',function(){
  //your object ...
  });
于 2012-06-27T05:48:34.847 に答える
-1

ここで何を達成しようとしているのかわかりません。現在入力フィールドにある値を一度だけ取得する必要がある場合は、これで問題ありません。入力値が変更されたときに form.fname の値が継続的に更新されることを期待している場合、それは発生しません。入力の変更イベントに関連付けられたハンドラーが必要になるか、次のようなことを行う必要があります。

var form = {
  fname: function () {
    return document.getElementById('fname').value;
  }
};

// Retrieving
form.fname()

ここで fname 関数を呼び出す必要があることに注意してください。単純に として参照することはできませんform.fname

再入力する必要がまったくない場合は、次のようにします。

var fields = ['fname', 'lname', 'city', 'state'];
var form = {};
for (var i = 0, j = fields.length; i < j; ++i) {
  form[fields[i]] = function () {
    return document.getElementById(fields[i]).value;
  }
}

フォームにドロップダウン リストなどを追加する場合は、あまり役に立たないため、もう少し注意する必要があり.valueますが、名前が変わっても名前を再入力することはありません。

そして、本当に気を使いたいのであれば、値を取得するときに名前を入力する必要さえありません。

for (var i = 0, j = fields.length; i < j; ++i) {
  console.log(form[fields[i]]())
}
于 2012-06-27T05:45:35.297 に答える