2

オブジェクトを Javascript で DOM ノードのカスタム属性に保存したいと考えています。setAttribute/getAttribute を試しましたが、属性がテキストに変換されます。

私はすでにやったと仮定します

node = document.getElementById( 'SAMPLE' );
object = { test: function( ){ stuff; } };

これは、私がテストした場所では機能しません

node.setAttribute( 'info', object );
val = node.getAttribute( 'info' ) ;

val に文字列値が残るためです。

私が行った場合

node[ 'info' ] = object;

それから

val = node[ 'info' ];

スクリプトの後半でオブジェクトを返します。

これは古い IE のような HTML5 より前のブラウザで動作しますか? 安全ですか?

4

1 に答える 1

3

プロパティとして「添付」することはできますが、それは良い考えではありません。–RobG

だから、ここに代替案の私の提案があります:

  1. Date.now().toString()一意の文字列を生成します-ループなどで生成していない限り、簡単な方法です。ここで最も効果的なものを使用してください。

  2. グローバルオブジェクトを持っている、と言うdomdata = {};

  3. 割当domdata[unique_string] = your_data_here;

  4. 保存node.setAttribute("data-dom-id",unique_string);

次の方法でデータを取得できるようになりました。

  1. 得るunique_string = node.getAttribute("data-dom-id");

  2. 取得するdomdata[unique_string]

終わり!:)

于 2015-01-04T23:56:48.667 に答える