相対位置にあるエレメントの取得について

[統計] HTMLからXHTMLへの移行を進めていますか?



0   名前: やました : 2006/08/07(月) 09:17  ID:cmJBA8dl
【何をしたいのか】
javascriptあるいはDOM関連の質問です

<div>長いテキスト</div>
<script>decoration(?)</script>

という状況でdecorationに長いテキストを渡したいのですが何か方法がありますでしょうか?

<div id=text>としておいてdecoration(text)とすれば一応解決するのですが,
該当部分が複数あり,それぞれに別のidを割り当てる必要があるためできれば使いたくありません.

必ず上のような順番になっているため

<div>長いテキスト</div>
<script>decoration(直前のエレメント)</script>

と書ければ一番良いのですがどのようにしたらよいでしょうか?


色づけを行うだけですので,タイトル通りの方法にはこだわりませんが
this.previousSiblingだとthisがwidowを指してしまい,
<div onload="decoration(this)">長いテキスト</div>とした場合は,
div要素がonLoadイベントをハンドルできないようでどちらもうまくいきませんでした.

1   名前: m035 ◆Wpzr1YKOiq : 2006/08/07(月) 09:17  [URL]  ID:4KIacXXc
divにはnameが存在せず、getElementsByNameは使えないので、divにclassを指定しておき、onload時にclassNameを調べれば出来そうです。
それと、文字色が動的に変化しないならJavaScriptを使うまでも無く、CSSだけで出来ますが・・・。

#余談
この質問は総合よりJavaScriptのカテゴリで良かったと思います。
過去ログを探すときにもそのほうが楽ですし。
どうも最近、総合の方に明らかなJavaScriptの質問が目立つ気がします・・・。
<html>
<head>
<title></title>
<script type="text/javascript">
<!--
onload=function(){
var arr=document.getElementsByTagName("div");
for(var i=0,len=arr.length;i<len;i++){
if(arr[i].className=="HIGHLIGHT")decoration(arr[i]);//面倒なのでclass名は大文字で統一
}
};
function decoration(obj){
obj.style.color="#f00";
}
//-->
</script>
</head>
<body>
0000000000000000000000000000
<div class="HIGHLIGHT">0000000000000000000000000000</div>
0000000000000000000000000000<br>
0000000000000000000000000000<br>
0000000000000000000000000000
<div class="HIGHLIGHT">0000000000000000000000000000</div>
</body>
</html>

一覧へ戻る