0

メタタグを動的に生成しています。デフォルトでメタタグ プロトタイプの一部であるオブジェクトのプロパティを追加できます。namecontentおよびID。しかし、オブジェクトに別のものを追加しようとすると、追加されfooないとします。

name id例でandを追加するのと同じ方法で追加できるように、独自のプロパティを追加するにはどうすればよいですかcontent

var headID = document.getElementsByTagName("head")[0];        
var metaNode = document.createElement('meta');
metaNode.name = "name"; //appends
metaNode.id = "id"; //appends
metaNode.content = "content"; //appends
metaNode.foo = "bar"; //doesn't append
headID.appendChild(metaNode);

結果:<meta id="id" name="name" content="content">

欲しいです: <meta id="id" name="name" content="content" foo="bar">

4

3 に答える 3

1

metaNode.setAttribute('foo', 'bar');

于 2011-10-07T02:57:56.900 に答える
1

これを行うためのより標準に準拠した方法は、次のプレフィックスを付けることdata-です。

metaNode.setAttribute("data-foo", "bar");

ただし、結果は次のようになります。

<meta id="id" name="name" data-foo="bar" />
于 2011-10-07T03:01:37.787 に答える
0

プロパティを DOM オブジェクトに追加すると、一部のブラウザは属性に関係なく同じ名前の属性を追加します (IE など)。他のブラウザは、名前が標準属性と同じ場合にのみ属性を追加します (Firefox など)。 .

非標準の属性を本当に扱いたい場合は、get/setAttribute を使用しますが、IE では少しバグがあるため、非標準の属性にのみ使用し、それ以外のすべてにはプロパティを使用してください。また、非標準のプロパティを追加する場合は、DOM オブジェクトを変更するのではなく、JavaScript オブジェクトに格納することをお勧めします (主に、標準の DOM プロパティまたは他のコードによって追加されたプロパティを踏みにじる可能性があるため)。

また、DOM オブジェクトはホスト オブジェクトであるため、非標準のプロパティを追加することを好まない場合があります (繰り返しますが、許可しなければならないという仕様はありません)。

最後に、メタ要素コンストラクターがある、プロトタイプがある、またはメタ要素のインスタンスがそのプロトタイプから継承されていると信じる理由はありません。一部のブラウザーは、DOM オブジェクトの JavaScript のようなプロトタイプ継承を実装していますが、実装していないブラウザーもあります。DOM オブジェクトがプロトタイプ継承を使用しなければならないということは何もありません (一部のオブジェクトはそうではありません)。

于 2011-10-07T03:22:00.340 に答える