要素の属性判別法

[新着] Webテンプレートを仮オープンしました



0   名前: VTown : 2006/12/13(水) 11:59  ID:5IXOuCH.
要素に値を代入したいとき、その要素の属性が読み出し専用か
設定可能かの判断をするには、なにかうまい判別法がありますか。

1   名前: 匿名 : 2006/12/13(水) 11:59  ID:uvMeDx3P
仕様で決まっている。

2   名前: Script41 : 2006/12/13(水) 11:59  ID:A3n49R0s
要するに、「読み出し専用(readonly)」に設定されているかどうかを判断すれば良い、ってコトです。

<html>
<head>
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript">
<!--
function chk(obj){
	if(obj.readOnly){
		alert("この欄は readonlyに設定されています。");
	}
}
//-->
</script>
</head>
<body>
<input type="text" readonly="readonly" value="foo" onclick="chk(this)"><br>
<input type="text" value="bar" onclick="chk(this)"><br>
<input type="text" readonly value="hoge" onclick="chk(this)">
</body>
</html>


3   名前: 匿名 : 2006/12/13(水) 11:59  ID:IG2PFGs1
>>0 が「要素」「属性」をどんな意味で使っているのか分からない。

要素オブジェクトの話ならば、>>1 の言うように読取専用のプロパティは決まっているので、コーディングの際に気を付ければ良いだけの話。

特殊な制限の DOM 実装上の話ならば、読取専用のプロパティを更新しようとすると DOMException(NO_MODIFICATION_ALLOWED_ERR)が発生するはずだから、try..catch する。もっとも、現状ではブラウザ設定等でプロパティの上書きを禁止された場合の挙動は定かではない。

フォームコントロールへの値の設定の話ならば、>>2 の言うように、input、textarea 要素オブジェクトには readOnly プロパティがあるのだから、これを見れば良い。

一覧へ戻る