[解決済み] JavascriptでCSSの値を変更する
質問
javascriptでインラインのCSS値を設定するのは簡単です。幅を変更したい場合、以下のようなhtmlがあります。
<div style="width: 10px"></div>
必要なのは
document.getElementById('id').style.width = value;
インラインスタイルシートの値が変更されます。通常、インライン・スタイルがスタイルシートを上書きするので、これは問題ではありません。例を挙げます。
<style>
#tId {
width: 50%;
}
</style>
<div id="tId"></div>
このJavascriptを使って
document.getElementById('tId').style.width = "30%";
というのが出てきます。
<style>
#tId {
width: 50%;
}
</style>
<div id="tId" style="width: 30%";></div>
これは問題です、私はインライン値を変更したくないだけでなく、私が持っているときに、私はそれを設定する前に、幅を探します場合。
<div id="tId"></div>
返される値は Null です。したがって、何かのロジックを実行するために幅を知る必要がある Javascript がある場合 (特定の値ではなく、幅を 1% 増やす)、文字列 "50%" を期待したときに Null を返しても、実際には機能しません。
そこで質問です。CSS スタイルにインラインに配置されていない値がありますが、これらの値を取得するにはどうしたらよいでしょうか? どのように私はidを与えられた、インライン値の代わりにスタイルを変更することができますか?
どのように解決するには?
OK、それはあなたがグローバルCSSを変更したいように聞こえるので、効率的に一度にペティキュラスタイルのすべての要素を変更することができます。 私は最近、これを自分で行う方法を Shawn Olson のチュートリアル . 彼のコードを直接参照することができます ここで .
以下は要約です。
を取得することができます。
スタイルシート
を経由して
document.styleSheets
. これは実際にはページ内のすべてのスタイルシートの配列を返しますが、どのスタイルシートの上にいるのかは
document.styleSheets[styleIndex].href
プロパティを使うことで判別できます。 編集したいスタイルシートが見つかったら、ルールの配列を取得する必要があります。 これは、IEでは"rules"、他のほとんどのブラウザでは"cssRules"と呼ばれています。 どのような
CSSRule
にあることを知るには
selectorText
プロパティにあります。 作業コードは以下のような感じです。
var cssRuleCode = document.all ? 'rules' : 'cssRules'; //account for IE and FF
var rule = document.styleSheets[styleIndex][cssRuleCode][ruleIndex];
var selector = rule.selectorText; //maybe '#tId'
var value = rule.value; //both selectorText and value are settable.
これがどのように機能するか教えてください。また、何かエラーがあればコメントしてください。
関連
-
[解決済み】divの高さを画面の残りスペースで埋めるようにする
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] CSSでcellpaddingとcellspacingを設定する?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み】HTML5入力のプレースホルダの色をCSSで変更する。
-
[解決済み] reactのrender関数でdynamic hrefを作成するには?
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] Node.jsのES6クラスをrequireで作る
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
-
[解決済み] JavaScriptデータフォーマット/プリティプリンタ