基本はgetAttribute() / setAttribute() メソッド
setAttribute() / getAttribute() メソッドは、DOM標準、非標準を問わずすべての属性にアクセスできるため、要素の属性をset/get する時は常にこのメソッドを使うようにする。
var foo_id = document.getElementById("foo").getAttribute("id");
document.getElementById("foo").setAttribute("id", “new_id”);class を扱う時の注意
例えばclass名を取得したい場合は、getAttribute("class") とすればよさそうだが、 IE7 ではgetAttribute("className") としないと、null が返されてしまう。(class属性はJavaScriptでアクセスするときの名前が変更されている属性のため)
ブラウザを問わず確実にclass名を取得するには、オブジェクトのclassNameプロパティに直接アクセスすればok。
//get
var foo_class = document.getElementById("foo").className;
//set
document.getElementById("foo").className = "newClass";input要素の状態を表す属性
form のinput要素の状態を表す属性(disabled, checked など)についても、直接オブジェクトのプロパティにアクセスして設定,取得する。
var textbox = document.getElementById("textbox");
textbox.disabled = false;jQueryの場合
jQuery では jQuery.attr() メソッドですべての属性にアクセスできる。
//get
var className = $("#foo").attr("class");
//set
$("#foo").attr("id", "newId");class名をsetするときは、jQuery.addClass() メソッドを使う。
$("#foo").addClass("new_class" "other class");まとめ
・要素の属性のget/setには、基本的に getAttribute() / setAttribute() メソッドを使う。
・例外的にclass名, formのinput要素の状態をget/setする際は、オブジェクトのプロパティに直接アクセスする。
・jQuery では、jQuery.attr() メソッドで要素の属性にアクセスする
参考文献:JavaScrip クックブック p251

JavaScriptクックブック
 
0 件のコメント:
コメントを投稿