テキストボックス選択時に背景色をJavaScriptで変更したく、下記のように書きました。
<input type="text" value="テキストボックスです" onfocus="this.style.backgroundColor='#cccccc'" onblur="this.style.backgroundColor='#ffffff'">
これをWindowsXP+IE6で実行したところ、背景色の処理はうまくいくのですが、画面のプロパティのテーマがデフォルトのWindowsXPの場合、元は影のないテキストボックスなのですが、背景色変更時に影つきのテキストボックスになってしまいます。
テーマがWindowsクラシックだと元々影つきなので変化しません。
背景色変更時に影つきにならないようにできませんでしょうか?
それともこれはIE6のバグなのでしょうか?
No.1ベストアンサー
- 回答日時:
私の経験では、これに限らずスクリプトでスタイルを変更すると、「背景色」という設定より以前に、「スタイルなし」→「スタイルあり」に設定され、影響する他のスタイルは、妙なデフォルトになってしまうようです。
たとえば今回の件では、「スタイルあり」になった時点で、borderStyleが設定されてしまうということです(立体 groove とか)。
で、これを解決するには、先に「スタイルあり」にしておくのが最善と思います。
<input type="text" value="テキストボックスです"
style="border:1px solid #7A96DF;background-color:#ffffff;"
onfocus="this.style.backgroundColor='#cccccc'"
onblur="this.style.backgroundColor='#ffffff'">
ちなみにonblurで白に「戻して」いますが、そもそも選択前が白とは限らないので、上記のようにあらかじめ選択前を白にしておいたほうが良いと思います。
なるほど、ありがとうございます。
ただ、既に大量のHTMLを作成後に発覚したので一つ一つstyle属性を追加するのは現実的ではありません。
そこで、CSSファイルでinputタグに対しての指定をしようかと思いましたが、そうするとボタンやチェックボックス、ラジオボタンなども変わってしまいます。
テキストボックスのみのstyleを変更する方法はないですかね?
これは話が変わってしまうので別の質問として投げます。
No.2
- 回答日時:
テキストボックスのみのstyleを、HTMLに手を加えずに変更するには、bodyのonloadイベントで次のスクリプトを呼んでください。
function styleSet() {
for (iTag = 0; iTag < (document.all.tags("input").length); iTag++) {
elmInput = document.all.tags("input")[iTag];
if (elmInput.type == "text" || elmInput.type == "password") {
elmInput.style.border = "1px solid #7A96DF";
elmInput.style.backgroundColor = "#FFFFFF";
}
}
for (iTag = 0; iTag < (document.all.tags("textarea").length); iTag++) {
elmInput = document.all.tags("textarea")[iTag];
elmInput.style.border = "1px solid #7A96DF";
elmInput.style.backgroundColor = "#FFFFFF";
}
}
<body onload="styleSet();">
上記で実現できますが、作成時の都合でこの方法を取るというのも、正直どうかと…。
> 一つ一つstyle属性を追加するのは現実的ではありません
なにも一つ一つ手作業で書かなくても、たとえば、単に
<input type="text"
を
<input type="text" class="TextBox"
に全置換して、CSSには
input.TextBox {
border: ...
というようにするのが自然かつスマートなのでは?
(無駄な動作もない)
度々ありがとうございます。
たしかにそこまでして対応すべきかは疑問に感じています。
今のHTMLに手を一切加えない形であればいいのですが。
結局はIE6のバグってことですかね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Excel(エクセル) こんなことできますか?例えば、sheetに貼り付けた図形のタイトルを、セルA1の文字で表示する。 5 2022/04/22 15:25
- Access(アクセス) ACCESS2019 ナビゲーションウィンドウの色 1 2022/05/10 17:15
- ノートパソコン AMDディスプレイ設定 暖色見にくい 2 2023/07/18 17:24
- Photoshop(フォトショップ) MacでPhotoshopに使い方 教えて! 2 2023/07/08 08:24
- HTML・CSS HTML <input type=password>の黒丸の色を変える方法 3 2022/11/23 13:56
- Windows 95・98 タスクバーの背景の色だけを変えたい。 2 2022/07/13 14:44
- その他(ブラウザ) zoomのバーチャル背景が選べない 4 2022/12/08 12:38
- LINE 自分が替えたトーク画面を相手に表示するには 1 2023/01/07 11:25
- Visual Basic(VBA) 昨日、質問した件『VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカ 4 2022/04/07 14:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マイナスなら赤字で表示したい...
-
子ウィンドウを閉じるとき、親...
-
JavaScriptで作ったアプリが正...
-
フォームの内容でリンク先URLの...
-
VBscriptの配列変数をJavascrip...
-
HTMLとJavaScriptで作った表示...
-
tabindexの取得
-
JavaScriptでCGIの呼出し・...
-
ページ間で変数を保持したい
-
HTMLファイル同士での値渡し
-
入力するテキストエリアをボタ...
-
現在時刻を表示させたい!
-
VBScriptでpingを実行(ブラウザ...
-
テキストエリアへセットフォーカス
-
サブウィンドウに変数を渡す方...
-
テキストボックスに入力した色...
-
return trueとreturn falseの用...
-
追加ボタンを押した際に ok ボ...
-
チェックボックスのON/OFFでVal...
-
<form action="#">の意味とは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TextBoxに半角数字以外を入れた...
-
HTMLとJavaScriptで作った表示...
-
tabindexの取得
-
VBscriptの配列変数をJavascrip...
-
プルダウンで選択された値を別...
-
フォームの内容でリンク先URLの...
-
テキストボックスに入力した色...
-
GetElementByIdがうまく取得で...
-
JavaScriptで作ったアプリが正...
-
jQueryのdatepickerの日付が選...
-
HTMLファイル同士での値渡し
-
マイナスなら赤字で表示したい...
-
VBSからjavascript
-
テキストエリアに履歴を残したい
-
どちらかひとつのテキストボッ...
-
一部Enter無効化の方法を教えて...
-
ページ間で変数を保持したい
-
Request.Form(key)の中身をクリ...
-
javascriptのちょっとした動作...
-
JSで一つのボタンを押したとき...
おすすめ情報