JavaScriptを使用してテキストの背景色を変える方法

このQ&Aのポイント
  • JavaScriptを使用してテキストの背景色を変える方法について教えてください。
  • 現在、テキストの背景色を変える処理をJavaScriptの外部ファイルに記述していますが、ページ全体の色が変わってしまいます。
  • テキストボックスの背景色だけを変える方法について教えてください。
回答を見る
  • ベストアンサー

テキストの背景色を変える。

onClickで、テキストの背景色を変えたいのですが。 その処理を外部ファイルに記述したいのです。 HTMLファイルでは下記のように記述し、 <・・・・・ <td><input type="button" value="テキストを赤に" onClick="Col001(tC1)"><input type="text" name="tC1" size="20" value=""></td> ・・・・・> JavaScript外部ファイルでは、 function Col001(objText){ alert(objText.value); objText.document.bgColor='red'; } と記述しています。 すると、ページ全体の色が変わってしまいます。 alert(objText.value);では、 テキストボックスtC1に入力されている値が 正常に表示されるのですが・・・。 テキストボックスの背景色だけを変える場合には どのようにしたらいいのでしょうか? どなたか教えてください。 よろしくお願いします。

noname#4065
noname#4065

質問者が選んだベストアンサー

  • ベストアンサー
  • sight
  • ベストアンサー率53% (199/370)
回答No.3

>気に障られたのでしたらすみません。 いぇ、そういうわけではありません。 ただ、私の知りうる限り、bgColorという属性を持っているのはdocumentsとlayerだけみたいなので、できないのではないか??と思ったのです。 ちなみに、同一ページ内でテストしても objText.document.bgColor='red'; の場合IEはページ背景色がかわり、NNではエラーになりました。 よく考えると、HTMLのINPUTにもカラー関係の属性などありません。変更するにはスタイルシートを用いる必要があります。ですから、JavaScriptから操作するにしても、一度スタイルシートを介さなくてはならないのではないでしょうか? そこで、 objText.style.backgroundColor'red'; にしてはいかがでしょう? あと、ちょっと邪道ですが思いついたもの。 あらかじめ、変更後のデザインを適当なID(たとえばinTxt)でスタイルシートで定義しておき、JavaScriptで objText.id = 'inTxt' ; という風にIDを変更して定義されているIDのスタイルシートが効くようにする。 参考になればよいのですが・・・。

noname#4065
質問者

お礼

できましたー!! 「objText.style.backgroundColor'red'; 」 の方でやってみたら、ばっちりできました。 長々とおつきあいいただいて 本当にありがとうございました。 基礎ができてないくせに、欲張りすぎかもしれません。 また何かありましたら、懲りずに書き込みさせていただきたいと思います。 よろしくお願いします。

その他の回答 (2)

  • sight
  • ベストアンサー率53% (199/370)
回答No.2

>普通に考えると、確かにそうですよね? >けれど、それではできなかったんです。 それほどふつうに考えた訳ではないのですが、 もっとふつうにかんがえるのならば、Form ElementsであるINPUTエリアには bgColorという属性が存在しないのではないでしょうか? 外部ファイル云々、と書かれていますが、同一ドキュメント中に記述した場合は期待通りの動きをしたということなのでしょうか??

noname#4065
質問者

補足

またまたすみません。 普通という表現が良くなかったようですね。 気に障られたのでしたらすみません。 同一ドキュメント内に記述した場合については、 いろんなHPでサンプルが表示されていました。 けれども、それをどうにかして外付けにできないかなと 奮闘しているのです。

  • sight
  • ベストアンサー率53% (199/370)
回答No.1

全体のソースがある訳じゃないので試しませんけど、 >objText.document.bgColor='red'; って、なにかおかしくありませんか? これ、objTextをもとにもどすと、 document.form.tC1.document.bgColor='red'; ですよね?? 「ドキュメントのフォームのtC1のあるドキュメントの背景色」 と解釈されているのでしょうか?ブラウザには。 objText.bgColor='red'; とかになるんじゃないですか?

noname#4065
質問者

補足

ご記入いただいてありがとうございます。 普通に考えると、確かにそうですよね? けれど、それではできなかったんです。 で、悩んでいるのです。 なんででしょうかねぇ・・・。

関連するQ&A

  • テキストだけonCllickを検知したい

    下記のコードを実行すると、以下のようになります  ----------------------------------- |□テキスト1                   |←<table>  ----------------------------------- |□テキスト2                   |  ----------------------------------- このときテキストをクリックしたらalert("hello")がでます。ですが、チェックボックス(□の部分)をクリックしてもalert("hello")が呼び出されてしまいます。理由はcheckboxとテキストが同じブロックに入っているからです。 <style> .long_width{  width: 100%;  background-color: lightgreen; } </style> <table border="1" class="long_width">  <tr>   <td onclick="alert('hello')"><input type="checkbox"></input>テキスト1</td>  </tr>  <tr>   <td onclick="alert('hello world')"><input type="checkbox"></input>テキスト2</td>  </tr> </table> (見やすさのためインデントは全角にしました) このコードだとチェックボックスをクリックした時もalert("hello")してしまいます。ですが、チェックボックスを押した時はhelloは表示させたくありません。目的は、チェックボックスではない緑色の範囲をクリックしたときにhelloを表示させたいです。何か方法はありますか? テキストをspanで包むとテキストにピッタリのボックスになり、テキストの右側の緑のエリアをクリックしてもhelloがでませんでした。また、divで包むとレイアウトが崩れました。(実際のテーブルは<td>がもっと多いものを想定しています) よろしくお願いします

  • クリックでテーブル内の背景色だけを変更したいです。

    教えてください。 ページ全体の背景色を変更するのは、 ↓でできたのですが、 <form> <input type="button" value="White" onClick="document.bgColor='white'"> <input type="button" value="Gray" onClick="document.main='gray'"> <input type="button" value="Blue" onClick="document.bgColor='blue'"> </form> ページ内の一部のテーブルのみの背景色を 変更したい場合はどうように変更すればいいのでしょうか? 教えてください!

  • ファイルの内容が表示できるか?

    外部ファイルでお願いします。 参照ボタンから、何でもいいのでファイルを選びます。ファイル名がテキストボックスに表示されます。 下にあるYESボタンを押すと、その下にコメントアウト してあるテキストボックスが上記のID,ファイル名に追加されテキストボックスの中に参照ボタンから選んだ ファイルが挿入される。また、左のNOボタンを押すと その列が削除されるというやり方は可能でしょうか? <html> <head> <title>画面</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <table> <col width="100"> <col width="100"> <tr> <td> <input type="file" name="file"size="50"> </td> </tr> </table> <table border ="1"> <col width="50"> <col width="200"> <tr> <th>ID</th> <th>ファイル名</th> </tr> </table> <input type="button" name="yes" value="YES"value="" > <!-- <table border="1"> <col width="50"> <col width="200"> <tr> <td><input type="button" name="no"value="NO"value="" ></td> <td><input type="text" name="file" size="40" value=""></td> </tr> </table> --> </body> </html>

  • テキストボックスの背景色について

    <html> <body> <form name="form1"> <input type="text" value="よろしく" name="text1"> <script language="javascript"> document.form1.text1.style.background-color = "green"; </script> </form> </body> </html> これはテキストボックスの背景色をグリーンにするプログラムなんですがうまくいきません。どこが間違っているのか指摘してください。

  • 複数のテーブルをラジオボタンで背景を変える

    javascriptは、まだ全くの初心者で色々探しながら勉強しています。 過去の質問で動作が似ているものがあったのですが、 複数のテーブルに使えるように変更したいのですが 全くやり方が分かりません。 宜しくお願い致します。 2つのテーブルがあります。 id=AAA と言うテーブルは、今日の天気のラジオボタン id=BBB と言うテーブルは、今日の花粉のラジオボタン だとします。 各テーブル内のラジオボタンが選択されたら、 そのテーブルだけに影響するセルの色変更。 つまり、 AAAのテーブル内のラジオボタン選択時は、AAAのセルの色を黄 BBBのテーブル内のラジオボタン選択時は、BBBのセルの色を赤 にしたいのです。 下記にサンプルコードを書きました。 これだと、AAAのテーブルのラジオボタンをクリックすると BBBのテーブルの背景色がクリアされてしまいます。 どうやって引数を渡していいのか分かりません。 宜しくお願い致します。 <html> <head> <title>test</title> <script type="text/javascript"> <!-- var saveTr; function setBg(rd) { if(saveTr) saveTr.bgColor="white"; saveTr=rd.parentNode.parentNode; saveTr.bgColor="yellow"; } --> </script> </head> <body> <table id='AAA'> <tr><td> 今日の天気 </td></tr> <tr><td> <input type='radio' name='tenki' value='1' onClick="setBg(this);">晴れ<br> </td></tr> <tr><td> <input type='radio' name='tenki' value='2' onClick="setBg(this);">曇り<br> </td></tr> <tr><td> <input type='radio' name='tenki' value='3' onClick="setBg(this);">雨<br> </td></tr> </table> <br> <table id='BBB'> <tr><td> 花粉の量 </td></tr> <tr><td> <input type='radio' name='kafun' value='1' onClick="setBg(this);">多い<br> </td></tr> <tr><td> <input type='radio' name='kafun' value='2' onClick="setBg(this);">普通<br> </td></tr> <tr><td> <input type='radio' name='kafun' value='3' onClick="setBg(this);">少ない<br> </td></tr> </table> </body> </html>

  • 動的な表の計算

    いつもお世話になります。 見よう見まねでやっている初心者です。 下記のような動的な表があります(PHPで表の行が可変します。) name="aa"に入力された値とname="bb"に入力された値の足し算の 回答をname="kaito"に出したいと思っています。 計算ボタンを押すとname="kaito"に答えを出したいのですが、 以下のような式ですと当然ながら全く反応しません。 javascriptまたはPHPをどう記述すれば表の値を計算できるようになるのでしょうか? できれば具体的に教えて頂ければ大変助かります。 ご教授の程よろしくお願い致します。 <script> function keisan(){document.tasizan.kaito.value=(document.tasizan.aa.value)+(document.tasizan.bb.value)} </script> <form name="tasizan"> <table width="100" border="1"> <tr> <th width="10" scope="col">a</th> <th width="10" scope="col">b</th> <th width="20" scope="col">回答</th> </tr> <tr> <td><INPUT type="text" name="aa" ></td><td><INPUT type="text" name="bb" ></td><td><INPUT type="text" name="kaito" ></td> <td><input type="button" value="計算" onclick="keisan()"/></td> </tr> <tr> <td><INPUT type="text" name="aa" ></td><td><INPUT type="text" name="bb" ></td><td><INPUT type="text" name="kaito" ></td> <td><input type="button" value="計算" onclick="keisan()"/></td> </tr> <tr> <td><INPUT type="text" name="aa" ></td><td><INPUT type="text" name="bb" ></td><td><INPUT type="text" name="kaito" ></td> <td><input type="button" value="計算" onclick="keisan()"/></td> </tr> <tr> <td><INPUT type="text" name="aa" ></td><td><INPUT type="text" name="bb" ></td><td><INPUT type="text" name="kaito" ></td> <td><input type="button" value="計算" onclick="keisan()"/></td> </tr> </table> </form>

  • 複数のテキストボックスでインデックスを取得する方法

    htmlでテキストボックスを複数作り、そのうちの一つの テキストボックスをクリックすると、Javascriptで そのテキストボックスのインデックスを取得したい思います。 ソースは簡単ですが、以下の通りです。 サンプルとして5つテキストボックスを作成していますが、 実際は不特定(データの読み込み件数)です。 onclick="hoge(???);" の???の部分に、テキストボックスのインデックスを書きたいのですが。。。 リストボックスだと、selectedIndexで取得できるようなのですが、 テキストボックスはどのような関数を使えばいいですか? <html> <head>   <script language="javascript">     function hoge(index){     alert(index);   }   </script> </head> <body>   <input type="text" name="hoge" onclick="hoge(???);"><br>   <input type="text" name="hoge" onclick="hoge(???);"><br>   <input type="text" name="hoge" onclick="hoge(???);"><br>   <input type="text" name="hoge" onclick="hoge(???);"><br>   <input type="text" name="hoge" onclick="hoge(???);"><br> </body> </html>

  • 追加したテキストボックスとテキストエリアの数の制御

    下記のようにテキストボックスとテキストエリアの数をボタンを押すことによって増やしていきます。 で、テキストボックスとテキストエリアは最大10個までとしたいのですが、どのようにしたらいいでしょうか? あとテキストエリアを追加していくとテキストエリアとテキストエリアの間が詰まってしまいます。間を空ける方法はないでしょうか? <script type="text/javascript"> function myAdd(){ var oTR=document.createElement("tr"); var c=count("mat"); var names=["mat","qua"]; for(var i in names){ var oTD = document.createElement("td"); var oTag = document.createElement("input"); oTag.setAttribute("type", "text"); oTag.setAttribute("name", names[i] + (c+1).toString()); oTD.appendChild(oTag); oTR.appendChild(oTD); } document.getElementById("t0").getElementsByTagName("tbody")[0].appendChild(oTR); } function count(name){ var tags=document.getElementsByTagName("input"); var c=0; var reg=RegExp("^"+name+"[0-9]+$"); for(var i=0;i<tags.length;i++){ if(tags[i].name.match(reg)){ c++; } } return c; } var tag_num = 4; function myTextAreaAdd(){ var oTag = document.createElement("textarea"); oTag.setAttribute("name", "foo" + tag_num++); var oDiv = document.getElementById("area"); oDiv.appendChild(oTag); } </script> </head> <body><form method="post" enctype="multipart/form-data" action="check.php"> <table id="t0" border> <tbody> <tr><td><input type="text" name="mat1" value=""></td> <td><input type="text" name="qua1" value=""></td> </tr> <tr><td><input type="text" name="mat2" value=""></td> <td><input type="text" name="qua2" value=""></td> </tr> <tr><td><input type="text" name="mat3" value=""></td> <td><input type="text" name="qua3" value=""></td> </tr> <tr><td><input type="text" name="mat4" value=""></td> <td><input type="text" name="qua4" value=""></td> </tr> </tbody> </table> <input type="button" value="追加する" onClick="myAdd()"> <br /> <span id="area"> <textarea name="foo1"></textarea> <textarea name="foo2"></textarea> <textarea name="foo3"></textarea> <textarea name="foo4"></textarea> </span><br /> <input type="button" value="追加する" onClick="myTextAreaAdd()"><br /> </form>

  • 背景色を変えて未入力チェックをしたいのですが。。。

    アンケートのフォームを作っています。記入項目が多いので未入力項目の背景色を変えてチェックしたいのですがうまくいきません。 フォームの中には ・テキストボックス ・ラジオボタン ・チェックボックス があり未入力の項目について背景色を変更してます。いろいろ試してみてなんとかテキストボックスとチェックボックスの背景色は変えることができたのですがラジオボタンの背景色が変えられません。 製作途中でうまく作動しませんがイメージを載せておきますのでなんとかお願いします。 <HTML> <HEAD> <TITLE>フォーム内容の入力チェック</TITLE> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <STYLE type="text/css"> <!-- .white { BACKGROUND-COLOR: white; font-color: black } --> </STYLE> <SCRIPT language="JavaScript"> <!-- // 入力チェック function checkForm(){ cForm = document.myFORM; total = cForm.elements.length; flag = false; for (i=0; i<total; i++) { cForm.elements[i].style.backgroundColor = "#FFFFFF"; if (cForm.elements[i].value == "") { cForm.elements[i].style.backgroundColor = "#FF8080"; flag = true; } } flag = BgChange(); if (flag == true){ alert("入力漏れがあるみたいよ"); } return flag; { alert("登録します、お疲れ様でした。"); } return flag; } //チェックボックス <!-- var DefaultColorCheckbox = "#FFFFFF"; //初期状態 var ChangedColorCheckbox = "#FF8080"; //変更後 function BgChange(){ for(i=0; i<document.myFORM.chk.length; i++){ if(document.myFORM.chk[i].checked){ document.myFORM.chk[i].style.backgroundColor = DefaultColorCheckbox; } else{ document.myFORM.chk[i].style.backgroundColor = ChangedColorCheckbox; } } } // --> </SCRIPT> <META content="IBM WebSphere Studio Homepage Builder Version 11.0.2.1 Trial for Windows" name="GENERATOR"> <META http-equiv="Content-Style-Type" content="text/css"> </HEAD> <BODY> <DIV align="center"></DIV> フォーム内容の入力チェック&ハイライト<BR> <FORM name="myFORM" method="post"> <TABLE border="1" cellpadding="5"> <TBODY> <TR> <TD>住所:<INPUT class="white" name="Address"><BR> 氏名:<INPUT class="white" name="yourName"><BR> 年齢:<INPUT class="white" name="yourAge"></TD> </TR> <TR> <TD id="aaa">電話 <INPUT type="radio" name="電話" value="1">携帯<INPUT type="radio" name="電話" value="2">公衆電話</TD> </TR> <TR> <TD>容器 <INPUT type="radio" name="容器" value="1">ビン <INPUT type="radio" name="容器" value="2">ペットボトル</TD> </TR> <TR> <TD><INPUT type="checkbox" name="chk" value="3">火災保険<BR> <INPUT type="checkbox" name="chk" value="4">生命保険<BR> <INPUT type="checkbox" name="chk" value="5">地震保険</TD> </TR> <TR> <TD align="center"><INPUT type="button" value="登録" onclick="checkForm()"></TD> </TR> </TBODY> </TABLE> </FORM> </BODY> </HTML>

  • 背景色を変えて未入力チェックをしたいのですが。。。

    アンケートのフォームを作っています。記入項目が多いので未入力項目の背景色を変えてチェックしたいのですがうまくいきません。 フォームの中には ・テキストボックス ・ラジオボタン ・チェックボックス があり未入力の項目について背景色を変更してます。いろいろ試してみてなんとかテキストボックスとチェックボックスの背景色は変えることができたのですがラジオボタンの背景色が変えられません。 製作途中でうまく作動しませんがイメージを載せておきますのでなんとかお願いします。 <HTML> <HEAD> <TITLE>フォーム内容の入力チェック</TITLE> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <STYLE type="text/css"> <!-- .white { BACKGROUND-COLOR: white; font-color: black } --> </STYLE> <SCRIPT language="JavaScript"> <!-- // 入力チェック function checkForm(){ cForm = document.myFORM; total = cForm.elements.length; flag = false; for (i=0; i<total; i++) { cForm.elements[i].style.backgroundColor = "#FFFFFF"; if (cForm.elements[i].value == "") { cForm.elements[i].style.backgroundColor = "#FF8080"; flag = true; } } flag = BgChange(); if (flag == true){ alert("入力漏れがあるみたいよ"); } return flag; { alert("登録します、お疲れ様でした。"); } return flag; } //チェックボックス <!-- var DefaultColorCheckbox = "#FFFFFF"; //初期状態 var ChangedColorCheckbox = "#FF8080"; //変更後 function BgChange(){ for(i=0; i<document.myFORM.chk.length; i++){ if(document.myFORM.chk[i].checked){ document.myFORM.chk[i].style.backgroundColor = DefaultColorCheckbox; } else{ document.myFORM.chk[i].style.backgroundColor = ChangedColorCheckbox; } } } // --> </SCRIPT> <META content="IBM WebSphere Studio Homepage Builder Version 11.0.2.1 Trial for Windows" name="GENERATOR"> <META http-equiv="Content-Style-Type" content="text/css"> </HEAD> <BODY> <DIV align="center"></DIV> フォーム内容の入力チェック&ハイライト<BR> <FORM name="myFORM" action="mailto***:@*.ne.jp" method="post"> <TABLE border="1" cellpadding="5"> <TBODY> <TR> <TD>住所:<INPUT class="white" name="Address"><BR> 氏名:<INPUT class="white" name="yourName"><BR> 年齢:<INPUT class="white" name="yourAge"></TD> </TR> <TR> <TD id="aaa">電話 <INPUT type="radio" name="電話" value="1">携帯<INPUT type="radio" name="電話" value="2">公衆電話</TD> </TR> <TR> <TD>容器 <INPUT type="radio" name="容器" value="1">ビン <INPUT type="radio" name="容器" value="2">ペットボトル</TD> </TR> <TR> <TD><INPUT type="checkbox" name="chk" value="3">火災保険<BR> <INPUT type="checkbox" name="chk" value="4">生命保険<BR> <INPUT type="checkbox" name="chk" value="5">地震保険</TD> </TR> <TR> <TD align="center"><INPUT type="button" value="登録" onclick="checkForm()"></TD> </TR> </TBODY> </TABLE> </FORM> </BODY> </HTML>