0

setAttribute メソッドを使用して、(たとえば) titleDiv という名前のカスタム属性を設定しています

HTML コード : <div id="Object" titleDiv="blank"></div>

Javascript コード :

var Object=document.getElementById('Object'); Object.setAttribute("titleDiv","myDiv");

これは、IE 9 以外のすべてのブラウザで正常に動作します。同じことが getAttribute でも発生します。

上記のようなカスタム属性をコードで広範囲に使用していますが、構造を変更することは想定されていません。

IEが理解できるように上記のコードを書く別の方法はありますか?

ありがとう。

4

1 に答える 1

3

質問の編集に基づいて更新された回答:

本当に避けるべき識別子を使用しています: Objectid 使用する変数のと名前の両方を変更することをお勧めします。そう:

<div id="theObject" titleDiv="blank"></div>

var theObject=document.getElementById('theObject');
theObject.setAttribute("titleDiv","myDiv");

ObjectJavaScript の組み込み関数です。of 要素はグローバル名前空間にダンプされるためid、組み込みの JavaScript 関数 ( ObjectFunctionDateなど) をid値として使用することは避けます。同様の理由で、特に自分自身や他の人を混乱させないようにするために、私はそれらを変数名として使用しないようにします.

とは言っても、問題( source ) を再現できなかったので、変数名と変数名を変更しますが、それは問題ではない可能性があります。以下も参照してください。id


元の回答:

setAttributeDOM 要素インスタンスを呼び出します。Object組み込み関数を介してそれを行うことはありません。

DOM 要素を使用すると、動作します (IE9 でも):

(function() {
  // Get an actual DOM element
  var target = document.getElementById("target");

  // Set the attribute
  target.setAttribute("titleDiv","myDiv");

  // Show the result
  display("Result: " + target.getAttribute("titleDiv"));

  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = String(msg);
    document.body.appendChild(p);
  }
})();

実例| ソース

divF12 開発者ツールを使用して HTML タブに移動すると、が実際に属性を取得していることがわかります。( 「ソースを表示」ではなく、必ず開発ツールを使用してください。 「ソースを表示」すると、DOM の現在の状態ではなく、サーバーから送信された HTML が表示されます。)


補足:接頭辞を使用data-ない非標準属性を使用することは、悪い考えです。その情報を、これを口述している人に連鎖的に送りたいと思うかもしれません。しかし、それはほぼ間違いなく、あなたが抱えている問題ではありません。

于 2013-04-29T09:34:56.643 に答える