こんにちは。
Javascriptは全くの初心者です。
よろしくお願いします。
<div id="test">
<ul>
<li><a href="a.html"><span>AAA</span></a></li>
<li><a href="b.html"><span>BBB</span></a></li>
<li><a href="c.html"><span>CCC</span></a></li>
</ul>
</div>
<script type="text/javascript">
<!--
var data = "AAA";// AAAは自動取得させる予定
var nodes = document.getElementById('test').getElementsByTagName("a");
for (i = 0; i < nodes.length; i++) {
if(nodes[i].innerHTML == data){
nodes[i].setAttribute("class","ddd");
}
}
//-->
</script>
上記のようなjavascriptを設置し、
<li><a href="a.html"><span>AAA</span></a></li>
の<a>にclass="ddd"を適用させようと思います。
(<span>には適用させたくない。)
しかし、
var data = "AAA";
だと<a>の.innerHTMLは<span>AAA</span>なので
<span>AAA</span> ≠ AAA
で一致しません。
そこで、
var data = "<span>AAA</span>";
としたところ、FirefoxとNNでは成功しましたが、それ以外のブラウザでは駄目でした。
初心者でお恥ずかしい限りですが、
どうしたらよいのかご教授いただければ幸いです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんな感じでチェックしてみてはいかがですか?
<style>
.ddd{
background-Color:red;
}
</style>
<div id="test">
<ul>
<li><a href="a.html"><span>AAA</span></a></li>
<li><a href="b.html" class="ddd"><span>BBB</span></a></li>
<li><a href="c.html"><span>CCC</span></a></li>
</ul>
</div>
<script type="text/javascript">
window.onload=function(){
var data = "AAA";// AAAは自動取得させる予定
var test = document.getElementById('test');
var nodes=test.getElementsByTagName("a");
for (i = 0; i < nodes.length; i++) {
var cnodes=nodes[i].childNodes;
for (j = 0; j < cnodes.length; j++) {
if(cnodes[j].nodeName=="SPAN"){
if(cnodes[j].innerHTML == data){
// nodes[i].setAttribute("className","ddd");
nodes[i].className="ddd";
break;
}
}
}
}
}
</script>
コメントアウト部分・・・
なんか試してみるとIEはclassをsetAttributeで指定するとき
setAttribute("className","ddd");
としないといけないみたいですね。
firefoxだとsetAttribute("className","ddd")はきかず
setAttribute("class","ddd");
のみしか反応しません。
なので nodes[i].className="ddd";
とするのが妥協案でしょうか?
またIEはgetElementById()に直で.getElementsByTagName()
をつなげられないようなので一度testオブジェクトをつくってから
nodesオブジェクトを作成したほうがよいようです。
お忙しい中、早速のご回答ありがとうございました。
Javascriptも説明も、『なるほど!!』という感想しかありません。
非常に参考になりました。
ご記入いただいたJavascriptを早速試したところ、見事上手くいきました。
当方WindowsXP環境下で、
IE6/IE7/FF2/NN7/Opera9/Safari3、すべてOKでした。
これで作業を進めることができます。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「jQuery」アコーディオンメニ...
-
Javascript <li>
-
オンマウスで画像ロールオーバ...
-
ソート フォーム
-
スタイルシートでロールオーバ...
-
javascriptで教えてください。 ...
-
【JavaScript】階層関係から要...
-
<ul>から</ul>の間をjavascriptで
-
JSの変数をHTMLに渡す方法
-
jQueryのeqで最後からn番目以降...
-
JS <a></a>タグ内のリンク先ア...
-
画像のランダム表示、及び画像...
-
オンマウスで画像が切り替わっ...
-
-UWSC:IEで自動クリック-
-
背景色を透明化
-
バッチファイルでカウントアッ...
-
外部参照で画像出したいのだが...
-
USEMAPでの指定区域にマウスオ...
-
MAX関数を使ってからLEFT JOIN...
-
Javascriptで指定した日付と時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
jquery ドロップダウンメニュー...
-
JQueryタブのアクティブ アン...
-
jQueryのeqで最後からn番目以降...
-
チェックボックスに入っている...
-
「jQuery」アコーディオンメニ...
-
クリックした<a>タグのみにClas...
-
javascriptでEnterキーをtabキ...
-
【JQuery】アコーディオンの入...
-
タブ切り替えの初期表示について
-
jQueryでネスト構造の<li>がク...
-
どの<li><a> が押されたか判別...
-
大量のチェックボックス状態取...
-
フルスクリーンについて・・・
-
jQueryのhide,showで中の要素が...
-
【jQuery】遅延実行(タイムラ...
-
アコーディオン自動開閉メニュ...
-
jQueryで表示する吹き出しdivの...
-
JqueryFileTree.js でフォルダ...
-
タブ切り替えの初期表示に関して
おすすめ情報