- PR -

JavaScript:任意の文字列を含むIDを取得するには?

1
投稿者投稿内容
セディ
会議室デビュー日: 2005/03/14
投稿数: 13
投稿日時: 2005-05-12 15:11
お世話になります。
JavaScriptで任意の文字列を含むIDには同じスタイルを適用したいと思っています。
※子は全ての親IDをもっています。こんな関係です↓
 親ID-子ID(親ID+子)−孫ID(親ID+子+孫)−ひ孫ID(親ID+子+孫+ひ孫)
関数ONOFF()で表示非表示を切り替えるのですが、該当するIDがOFF(非表示)になる場合、そのIDの文字列を含むIDは全て非表示するため、任意の文字列を含むIDを全て取得する方法を探しています。

<!--親ID(TID01)-->
 <div id="TID01" class="OK" onClick="ONOFF(0)"></div>
<!--子ID(TID01 + TID02)-->
 <div id ="TID01TID02" class="NO"onClick="ONOFF(TID01)"></div>
<!--孫ID(TID01+ TID02+TID03)-->-->
<div id ="TID01TID02TID03" class="NO"onClick="ONOFF(TID01TID02)">
</div>

下記のような形でIDの取得を試しましたがエラーになります。
任意の文字列を含むIDを取得するにはどうしたらいいでしょうか。よろしくお願いします。


function ONOFF(parents){
if (parents != 0){
sVal = parents;
obj =document.getElementById(sVal + "*").id;
document.child.className ="OFF";
//class=OFFの場合、display:none;になります
}
}
ひとむ
常連さん
会議室デビュー日: 2003/08/28
投稿数: 38
投稿日時: 2005-05-13 00:55
ツリーメニューのための表示切替ですか?だとしたらもう少し簡単な方法があるかと思いますが...

とりあえず引数に与えられた文字列をIDに含むDIV要素を見つける関数を作ってみました。
そのIDをalert表示するようにしてあります。

コード:
function findID(parents) {
	objDiv=document.getElementsByTagName('div');

	objRegex = new RegExp(parents);

	for(i=0; i < objDiv.length; i++){
		if(objDiv[i].id.match(objRegex)){
			alert(objDiv[i].id);
		}
	}
}

セディ
会議室デビュー日: 2005/03/14
投稿数: 13
投稿日時: 2005-05-16 10:10
ひとむさん。
ありがとうございました!無事解決しました。
#うっかり、funcitonの引数を文字列として扱わなかったためにobjectとして認識されていたようでparentsの値(・・文字として一旦とりたかった)が取れないことに気づかず苦戦しましたが、気づいた後は教えていただいた方法と組み合わせることで解決しました。
1

スキルアップ/キャリアアップ(JOB@IT)