重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

cromeやfirefoxでは正常に動きますが、IEにて一部動いてくれない部分があり困っています。
おかしな点や原因など教えていただきたくご質問させていただきます。

<style>
.that{color:red;}
</style>

<script type="text/javascript">
$(function(){
$('button').click(function(){
$('#list>ul').removeClass('that');
var val = $(this).text();
$('#list>ul li').each(function(){

if($(this).text() == val){
$(this).parent().addClass('that');
};
});
});
});
</script>

html↓

<button>100</button>
<button>200</button>
<button>300</button>

<div id="list">
<ul>
<li>100</li><li>200</li>
</ul>
<ul>
<li>300</li><li>200</li>
</ul>
</div>

クリックしたボタンの数値があるULの色を変えるものです。
100と300をクリックした場合は正常に変わりますが、200をクリックした時に変わらなくなります。
<li>の中で最後に書かれている数値が効かなくなるようで、<li>の100と200を入れ替えると100が効かなくなります。(IEのみ)

原因等わかりましたらよろしくお願いいたします。

A 回答 (2件)

> if($(this).text() == val){


の前で $(this).text() の値を
alert($(this).text());
で調べればわかるけど、

<li>200</li> の .text() は "200" ではなくて "200 " が帰ってくる。

変な値が帰ってくるのは IE が Quirks モードで動作しているからかも。

対処方法だけれど、

HTML の初めに DOCTYPE を宣言して IE を標準モードにするか
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

とても勧められないけれど、どうしても Quirks モードのままがいいなら、
UL の閉じタグを改行しないで LI タグのすぐ後ろに書けば、回避できるとおもう。
<ul>
<li>100</li><li>200</li></ul>
<ul>
<li>300</li><li>200</li></ul>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
>"200 "
違う値が返ってくるんですね、標準モードで試してみましたがダメでした。

<ul>
<li>100</li><li>200</li></ul>

このやり方で動作したました!全てのhtmlを変えるとなると現実的ではないですが、
回避する手段を教えていただき大変助かりました。
もう少し探ってみたいと思います、
ありがとうございました!

お礼日時:2012/09/27 17:51

ようは、これと同じことでは?


http://oshiete.goo.ne.jp/qa/7707134.html

MSお得意の「仕様」なのかも知れませんが、
 if($(this).text() == val){
の時にIEだけ切り出して、テキストを読み替えてあげるか、あるいは最初に整理しておくか…

動的に値が変化するのか、実際にテキストの値が取る可能性の範囲がどのようなものかなどを考慮して、自衛手段を講じるしかなさそう。
    • good
    • 0
この回答へのお礼

そうですね・・
これでどうこうしようというのが無理があるというのが理解できた気がします。

自衛手段をとりたいと思います。
ありがとうございました。

お礼日時:2012/09/29 00:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!