0

これは奇妙な質問かもしれません。2 つの配列を融合させようとしていますが、読み取りではそれらが別々のタイプのオブジェクトとして表示されます。.serializeArray() jquery 関数によって収集された最初のタイプは、警告すると次のように表示されます。

[object Object]

2 つ目は、より JS の方法を使用して各オプションをプッシュすることで得られるもので、次のように表示されます。

[object HTMLOptionElement]

以下は私のコードです:

   incrCopy();
   enableSubmit();
   disableReset();

   var linkedInArray = [];
   $('form select option.linked-in').each( function() {
   linkedInArray.push(this);
   })
   //These alert the second way

   prevVals = $("form").serializeArray();
   //They alert the first way
   prevVals.push(linkedInArray);
   alert(prevVals);

ここで何が欠けているのか誰にも分かりますか?

4

1 に答える 1

2

これは、jQuery と JavaScript の違いではありません。それがどのように機能するかserializeArrayです。HTML 要素のリストを返すのではなく、名前と値のプロパティを持つ単純なオブジェクトのリストを返します。

たとえば、次のようなものを見つけるとします。

<input name="user[eye_color]" value="brown" />
<input name="user[age]" value="47" />

次のような単純なオブジェクトの配列を返します。

[
  {
    name: "user[eye_color]",
    value: "brown"
  },
  {
    name: "user[age]",
    value: 47
  }
]

逆に、最初のループは jQuery セレクターを反復処理します。ここで、各要素は何らかのネイティブHTMLElementHTMLDivElement( 、HTMLInputElementHTMLTableElementなど) です。

于 2012-10-25T18:26:12.527 に答える