2

誰かが私を助けてくれますか?この関数を使用して動的に入力を作成しようとしていますが、「form」属性が設定されていません。

function addInput(parentID,inputNAME) {
    var padre = document.getElementById(parentID);
    var container = document.createElement("input");
    container.type = "text";
    container.name = inputNAME;
    container.value = "";
    container.form = 'extra';
    var enter = document.createElement("br");
    padre.appendChild(container);
    padre.appendChild(enter);
}

私もこれで試しました:

container.formName = 'extra';
container['form'] = 'extra';
container.attributes['form'] = 'extra';
container.createAttribute('form','extra')

編集:
回答:
container.setAttribute("Form",'extra');

4

2 に答える 2

7

私は使用しました

container.setAttribute("Form",'extra');

FF、Chrome、Operaで動作しているようです。

于 2012-07-01T22:58:55.113 に答える
2

なぜ「私は私ではない」が彼/彼女の答えを削除するのか、それはほとんど正しいです。form プロパティは、DOM 2 HTML仕様で読み取り専用として指定されており、フォームコントロールが含まれているフォームを参照します。フォームに含まれていない場合、未定義になります。

form属性はHTML5の新機能であり、コントロールをその中のフォーム以外のフォームに関連付けることを目的としています。これは、ネストされたフォームに使用することを目的としています。

input要素にform属性を設定すると、予期しない結果が生じる可能性があります。HTML5に準拠するブラウザでは、form属性の値がドキュメント内の別のフォームのIDである場合、コントロールはそのフォームに関連付けられるため、そのformプロパティはフォームへの参照であり、そのform属性は文字列になります(関連するフォームのID)。そうしないと、属性値はコントロールのフォームDOMプロパティに反映されませんが、属性値が設定されたままになる可能性があります。

IEは常に属性とプロパティを台無しにしてきましたが、IE6はformプロパティを属性値に置き換えます。それ以降のバージョンでは動作が異なる可能性があり、そのうちの1つがHTML5をサポートしている可能性があります。

以下が役立つ場合があります。

<form id="form0">
  <div>
    <input type="button" form="form1" onclick=
      "alert('form property is: ' + this.form + ' ' + this.form.id + 
             '\nform attribute: ' + (typeof this.getAttribute('form')) +
             ' ' + this.getAttribute('form'))
      " value="Show form property  and attribute">
  </div>
</form>
<form id="form1"><div></div></form>
于 2012-07-01T02:07:28.253 に答える