重要なお知らせ

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

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

innerHTMLでcssのコードを直接書き換えたいのですがうまくいきません。
Firefoxでは反映されるのですが、IEでは書き換えられません。
欲しい結果としては疑似クラスを変更してリンク色を変えたいです。
DOMで疑似クラスを変更できればいいのですが、やりかたがわかりません。
リンク色を変更できる方法だれか教えてください。
宜しくお願いします。



<html>
<head>
<title>Css</title>
<script language="javascript">
<!--
function CssRewrite() {

$cssString1 = '<style type="text/css">';
$cssString1 += '<!--';
$cssString1 += '.test a:link {color: ';
$cssString1 += '#AAAAAA;}';
$cssString1 += '.test a:visited {color: ';
$cssString1 += '#AAAAAA;}';
$cssString1 += '// -->';
$cssString1 += '</style>';

alert($cssString1);
document.getElementById("css0").innerHTML = $cssString1;
}

window.onload = CssRewrite;
// -->
</script>
</head>
<body>
<span id="css0"></span>
<span class="test"><a href="#">css</a></span>
</body>
</html>

A 回答 (1件)

このスクリプトってspanの中にstyleを書いているんですよね。


それはまずいでしょう。

どうせなら
style=document.createElement('style')
document.getElementsBytagName('head')[0].appendChild(style)
style.cssText=$cssString1

Firefox Opera8なら
style.appendChild(createTextNode($cssString1))

IE addRule1又はstyleSheets[参照番号].cssText
Firefox insertRule
Opera8 CSSにアクセスできない。
Opera9 insertRuleかな?
でルールを個別に追加

の方が動く可能性が高いと思います。

でもwindow.onloadで書きかえるなら最初からそのスタイルシートを書いておけば良いような気がします。
ブラウザ毎に分けたいのかな?
    • good
    • 0
この回答へのお礼

window.onloadはテスト用に適当につけたものなので、意味はありません:)

IE
styleSheets[参照番号].cssText
Firefox Opera8
style.appendChild(createTextNode($cssString1))

上記で、おっしゃられたとおりにやったらいきました!
プラウザ毎の処理まで提示して頂き、本当に助かりました。
自分ではどうにもならなかったのでとても嬉しいです。
有り難うございました!

お礼日時:2006/12/14 08:05

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