• 締切済み

javascriptのスタイル指定?

下記の記述の、「残り」「時間」「分」「秒」にそれぞれスタイルを追加したいです。 ----------------------------- document.tbox01.dspday01.value = "残り"+cnt_hour+"時間"+cnt_min+"分"+cnt_sec+"秒"+cnt_millisec ----------------------------- イメージとしては、下記のように記述して、 ----------------------------- document.tbox01.dspday01.value = "<span class="hoge01">残り</span>"+cnt_hour+"<span class="hoge02">時間</span>"+cnt_min+"<span class="hoge03">分</span>"+cnt_sec+"<span class="hoge04">秒</span>"+cnt_millisec ----------------------------- CSSでスタイルを指定したいのですが、可能でしょうか?

みんなの回答

  • tracer
  • ベストアンサー率41% (255/621)
回答No.5

JavaScript以前に、inputのvalueにhtmlを入力することはできません。 厳密に言えば、inputに入力されたhtmlは、htmlではなく単なる文字列として解釈されます。 従って、CSSそのものが使えないのです。 javascriptを使わずに、手作業で <input value="<span>残り</span>" type="text"> としてみれば、どのように表示されるかわかりますよ。

全文を見る
すると、全ての回答が全文表示されます。
  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.4

要素 FORM で使用する各入力要素の属性 value は、大抵の場合は HTML を受け付けません。 「リッチテキストエディタ」なるJavaScriptライブラリを導入すれば可能でしょうが なので、表示する場所を要素 div に変更してはいかがでしょう。 <style> #ID名 span { ... } </style> <div id='ID名'></div> <script> document.getElementById('ID名').innerHTML = "<span>...</span>"; </script>

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

document.tbox01 というところを見ると、スクリプトの処理結果の出力先として、HTMLの本文側にINPUT要素のtextboxかなにかを設定しているんでしょうから、そちら側にスタイルを設定しておけばよろしいのでは?

alcxp
質問者

補足

みなさま、ご回答ありがとうございます。 説明不足でしたので補足させて頂きます、申し訳ありません。 下記のようなカウントダウンタイマーを作っており、 数字以外の「残り」「時間」「分」「秒」の部分のみ、スタイルを変更したいです。 (つまり【数字】と【「残り」「時間」「分」「秒」】を別々でスタイル指定したい) ※現状、passers-byさんの方法で試しており、  数字を含む全ての文字にスタイルが効いている状態です。 ----------------------------- <script> window.onload=showday; year=2014; //年 mon=3; //月 day=31; //日 time=0; //時 xday = new Date(year,mon-1,day,time,00,00);//基準になる年月日 function showday() { nowday = new Date(); passtime= xday.getTime()-nowday.getTime(); //今から基準になる日までの経過時間 1/1000秒単位 cnt_day = Math.floor(passtime/(1000*60*60*24));// カウントダウン表示 (日にち) の取得 passtime = passtime -(cnt_day*(1000*60*60)); // 経過秒から(時)を引く cnt_hour = Math.floor(passtime/(1000*60*60));// カウントダウン表示 (時) の取得 passtime = passtime -(cnt_hour*(1000*60*60)); // 経過秒から(時)を引く cnt_min = Math.floor(passtime/(1000*60)); // カウントダウン表示 (分) 取得 passtime = passtime -(cnt_min*(1000*60));// 経過秒から(分)を引く cnt_sec = Math.floor(passtime/1000);// カウントダウン表示 (秒) 取得 passtime = passtime -(cnt_sec*(1000)); // 経過秒から(秒)を引く cnt_millisec = Math.floor(passtime/10); // カウントダウン表示 (100/1秒) 取得 // 分、秒、ミリ秒を2桁で表示する if(cnt_min<10){cnt_min = '0' + cnt_min;} if(cnt_sec<10){cnt_sec = '0' + cnt_sec;} if(cnt_millisec<10){cnt_millisec = '0' + cnt_millisec;} if((xday - nowday) > 0){ document.tbox01.dspday01.value = "残り"+cnt_hour+"時間"+cnt_min+"分"+cnt_sec+"秒"+cnt_millisec } else { document.tbox01.dspday01.value = "キャンペーンは終了しました" } timerID = setTimeout('showday()', 10); } </script> <style> .cnt_time01 { border:0; line-height:1.3; height:33px; font-size:28px; font-weight:bold; font-family:Meiryo; width:360px; vertical-align:middle; margin:11px 0 0 575px; } </style> <form name="tbox01"><input name="dspday01" type="text" class="cnt_time01"></form> ----------------------------- どのようにすれば個別でスタイル指定できるのでしょうか…。 よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

innerHTMLでなくてvalueにタグを代入するの? なにか勘違いしていませんか?

全文を見る
すると、全ての回答が全文表示されます。
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

実験してみればすぐにわかると思いますが、もちろん可能です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • javascriptによるカウントダウンタイマー制作

    只今、javascriptでカウントダウンタイマーを制作しています。 ボタンをクリックすると動いているカウントダウンタイマーに10秒追加するようにしたいのですが、いろいろためしてみたのですがうまくいきません。散々悩んでいるうちに2日もたってしまいました。 御存じの方、いらっしゃいましたらどうか教えていただけませんでしょうか? <script type="text/javascript"> <!-- if (window.attachEvent){ window.attachEvent('onload', showday); }else { window.addEventListener('load', showday , false); } function settime1(){ var year =2011; //年 var mon =4; //月 var day =2; //日 var time =20; //時 var min = 20; //分 var sec = 15; //秒 var xday = new Date(year,mon-1,day,time,min,sec); //基準になる年月日 return xday; } function showday() { var nowday = new Date(); var xday = new settime1(); var passtime= xday.getTime()-nowday.getTime(); //今から基準になる日までの経過時間 1/1000秒単位 var cnt_day = Math.floor(passtime/(1000*60*60*24)); // カウントダウン表示 (日にち) の取得 passtime = passtime -(cnt_day*(1000*60*60*24)); // 経過秒から(日にち)を引く var cnt_hour = Math.floor(passtime/(1000*60*60));// カウントダウン表示 (時) の取得 passtime = passtime -(cnt_hour*(1000*60*60)); // 経過秒から(時)を引く var cnt_min = Math.floor(passtime/(1000*60)); // カウントダウン表示 (分) 取得 passtime = passtime -(cnt_min*(1000*60));// 経過秒から(分)を引く cnt_sec = Math.floor(passtime/1000);// カウントダウン表示 (秒) 取得 passtime = passtime -(cnt_sec*(1000)); // 経過秒から(秒)を引く var cnt_millisec = Math.floor(passtime/10); // カウントダウン表示 (100/1秒) 取得 // 分、秒、ミリ秒を2桁で表示する。 if(cnt_min<10){cnt_min = '0' + cnt_min;} if(cnt_sec<10){cnt_sec = '0' + cnt_sec;} if(cnt_millisec<10){cnt_millisec = '0' + cnt_millisec;} if((xday - nowday) > 0){ document.tbox.dspday.value = cnt_hour+":"+cnt_min+":"+cnt_sec; }else { document.tbox.dspday.value = "終了" } timerID = setTimeout('showday()', 1000); } </script> </head> <body> <form name="tbox" action="#"> <input name="dspday" id="dspday" type="text" style="position:absolute; top:475px;left:55px; font-size : 25px; z-index:3; color:navy; background:transparent; border-width : 0px ;border-style : solid;font-weight :bold ;" size="45" /> <input name="dspdaybtn" type="button" onClick="" value="10秒追加" style="position:absolute; top:510px; left:70px; z-index:4;"/> </form>

  • JavaScriptで時間指定をして表示を切り替え

    JavaScriptで時間指定をして表示を切り替えたいのですが safariだけうまく動作しません、下記のjsファイルを読み込んでHTML側には <div id="hoge1">切り替え前の内容</div> <div id="hoge2">切り替え後の内容</div> としています。 解決策があればご教授お願い致します。 window.onload = changeDisplay; function changeDisplay(){ var objDate = new Date(); var now = objDate.getTime();//現在のタイムスタンプ(ミリ秒)を取得 var changeTime = new Date("Jan 1, 2011 00:00:00");//切り替える日時のタイムスタンプ(ミリ秒)を取得 //切り替え前 if (now < changeTime) { document.getElementById('hoge1').style.display = "block"; document.getElementById('hoge2').style.display = "none"; setTimeout("changeDisplay()", 1000);//1秒ごとに実行(◯秒ごとの場合は、第2引数に 「◯ * 1000」 と記述) //切り替え後 } else { document.getElementById('hoge1').style.display = "none"; document.getElementById('hoge2').style.display = "block"; } }

  • 残り時間カウントダウン表示 『あと○時間△分□秒』

    CGIゲーム内であるイベントが発生してから12時間後に新イベントが自動発生するスクリプトを作りたいのですが ネット検索をしても残り日数表示しかなくてサンプルがないので創ってみたのですが <body onLoad="count()" onUnload="clearTimeout()"> $ENV{'TZ'} = "JST-9"; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); <=現在の時間 $date="0,0,11,3,0,107,0,27,0 485,197,854,"; <=保存されたプレイベント発生時間 foreach($date){ ($sc,$mi,$ho,$md,$mo,$ye,$wd,$yd,$isd)=split(/,/); } print <<"EOM"; <SCRIPT language="JavaScript"> <!-- cnt = $sc-$sec; cnt1=$mi-$min; if($ho>$hour){cnt2=$ho-$hour-12;} else{cnt2=$ho-$hour+12;} if(cnt2>12){cnt2=cnt2-12;} if(cnt<0){cnt=cnt+59; cnt1=cnt1-1;} if(cnt1<0){cnt1=cnt1+59; cnt2=cnt2-1;} if(cnt2<0){cnt=0;cnt1=0;cnt2=0;} function count(){ document.form.box.value = cnt2+"時間"+cnt1+"分"+cnt+"秒"; cnt--; if(cnt<0){cnt=cnt+60; cnt1=cnt1-1;} if(cnt1<0){cnt1=cnt1+60; cnt2=cnt2-1;} if(cnt2<0){cnt=0;cnt1=0;cnt2=0;} if(cnt2 >=0) { if(cnt1 >=0) { if(cnt >=0) { setTimeout("count()",1000); }}} } //--> </SCRIPT> <FORM name="form"> あと<INPUT type="text" name="box" size="17">です </FORM> EOM とりあえず表示はできた(と思う)のですがもっと楽で確実な方法はありますでしょうか?(モジュールとかは使わずに) または上記のスクリプトすぐに思いつかなかったのでtime()で計算してたのですが 『残り53495秒』(適当)のような表記方法しか分かりません これを○時間△分□秒のように変換してカウントダウンできるでしょうか? localtime()、time()どちらでもいいのでご意見お願いします

  • 指定した スタイルの class のみ処理をする

    Javascript で 指定した class のみの値を変更することは可能でしょうか? id だと一つ一つ振らなければならないですが、 class なら複数にふれますよね。 複数にclassを指定して一括処理をしたいんです。 <div class="hoge">aaaa</div> <div class="hoge">bbb</div> みたいなものがあって document.getElementById("hoge").style.display = "none"; のように、 class=hoge のみ一気に非表示にしたいんです。 説明が下手ですみませんがよろしくお願いします。

  • javascriptカウントダウン終了後別ページへ

    javascriptでカウントダウン終了後に別ページに飛ばすリンクを表示したいのですが、どのようにすれば教えていただけますでしょうか? 下記スクリプトではカウントダウン終了時に「終了しました」と表示されます。 その「終了しました」にリンクを貼りたいです。 <script language="JavaScript" type="text/javascript"> function CountdownTimer(elm,tl,mes){ this.initialize.apply(this,arguments); } CountdownTimer.prototype={ initialize:function(elm,tl,mes) { this.elem = document.getElementById(elm); this.tl = tl; this.mes = mes; },countDown:function(){ var timer=''; var today=new Date(); var day=Math.floor((this.tl-today)/(24*60*60*1000)); var hour=Math.floor(((this.tl-today)%(24*60*60*1000))/(60*60*1000)); var min=Math.floor(((this.tl-today)%(24*60*60*1000))/(60*1000))%60; var sec=Math.floor(((this.tl-today)%(24*60*60*1000))/1000)%60%60; var milli=Math.floor(((this.tl-today)%(24*60*60*1000))/10)%100; var me=this; if( ( this.tl - today ) > 0 ){ if (day) timer += '<span class="day">'+day+':</span>'; if (hour) timer += '<span class="hour">'+hour+':</span>'; timer += '<span class="min">'+this.addZero(min)+':</span><span class="sec">'+this.addZero(sec)+':</span><span class="milli">'+this.addZero(milli)+'</span>'; this.elem.innerHTML = timer; tid = setTimeout( function(){me.countDown();},10 ); }else{ this.elem.innerHTML = this.mes; return; } },addZero:function(num){ return ('0'+num).slice(-2); } } function CDT(){ var tl = new Date('2013/2/1 00:00:00'); var timer = new CountdownTimer('CDT',tl,'終了しました'); timer.countDown(); } window.onload=function(){ CDT(); } </script>

  • javascriptでスタイルを動的に作成する方法

    javascriptで動的に新たにクラスを作成してスタイルを設定する方法を教えてください。 たとえば、 <html> <head> <style> .hoge { color: red; } </style> </head> <body></body></html> の<style>~</style>をjavascriptで記述するにはどう書けばよいでしょうか? もちろん、 document.write('<style> .hoge {color: red;}</style>'); では、<style>タグを埋め込むのと同じですので、純粋なjsのcodingをご教示ください。(prototype.jsなどのライブラリを使わない方法) よろしくお願いします。

  • ページを開く時のサイズ指定の方法

    時間を表示させるJAVASCRIPTを使っているのですが、ファイルを表示させた時 サイズを指定したいのですが、よろしくおねがいいたします。現在のソース     <FORM METHOD="post"> ------- World Time-------- <BLOCKQUOTE> <TABLE> <TR><TD>Kiev<TD><INPUT NAME="nz" SIZE=6> <TR><TD>Donetsk<TD><INPUT NAME="london" SIZE=6> <TR><TD>JPN<TD><INPUT NAME="tokyo" SIZE=6> </TABLE> </BLOCKQUOTE> </FORM> <SCRIPT LANGUAGE="JavaScript"> tz_nz = 3 * 60; // ウクライナの時間です tz_uk = 2.5 * 60; // ウクライナ ドネツク tz_jp = 9 * 60; // 日本 var nz, uk, jp; // 時刻文字列を入れるところ function update_watch() { now = new Date(); nz = nowat(now, tz_nz) uk = nowat(now, tz_uk) jp = nowat(now, tz_jp) document.forms[0].elements[0].value = nz document.forms[0].elements[1].value = uk document.forms[0].elements[2].value = jp setTimeout('update_watch()', 999); // 1000msec = 1sec } function nowat(now, tz) { var hour, min, sec; var t = new Date(); t.setTime(now.getTime() + (now.getTimezoneOffset() + tz) * 60 * 1000); hour = t.getHours(); min = t.getMinutes(); sec = t.getSeconds(); if (hour < 10) { hour = "0" + hour; } if (min < 10) { min = "0" + min; } if (sec < 10) { sec = "0" + sec; } return hour + ":" + min + ":" + sec; } update_watch(); </SCRIPT>

  • JavaScriptで コードを変数で指定し入力するには

    題名が少し変で分かりにくいですが 以下のようなコードを書いています <SCRIPT language="JavaScript"> function win_open(){// var cnt; var to1; var frm1; var i; cnt=25; for(i=6; i<=cnt; i++) { to1="document.hoge.koumoku" + i + ".value"; frm1="self.opener.document.hoge.koumoku" + i + ".value"; ここにto1で指定したテキストボックスに入れる = eval(frm1); } } </SCRIPT> 親から 子を開いて 子のスクリプトで 子のフォームへ親の値を代入したいのですが 25項目あるので 25行書くのもスマートでないから for文でやってみようと思ったのですが 親から値を取る方はeval関数でうまく取得できたのですが このフォーム内のテキストボックスに書く場合 eval関数だと 戻り値を指定するのだから エラーが返ってきます。 かといって document.hoge.koumoku" + i + ".value = eval(frm1); では構文エラーになってしまいました 何か他に関数があるのかよく分からないので 教えて頂けたらと思っています よろしくお願いします

  • javascript カウントダウンについて

    下記のようなjavascript でカウントダウンをしています。 ですが、指定日を過ぎると、00 表示になってしまいます。 これを指定日の指定時間を過ぎたら、-- という表示に変更し、 また、bodyないのタグにidを使って「指定日を過ぎました。」という 表示を出したいのですが、ご教授ねがいます。 <script language="javascript"> <!-- function countdown(year, month, day, hour, minute) { Today = new Date(); Todays_Year = Today.getFullYear() - 2000; Todays_Month = Today.getMonth() + 1; Todays_Day = Today.getDate(); Todays_Hour = Today.getHours(); Todays_Date = (new Date(Todays_Year, Todays_Month, Todays_Day, Todays_Hour, Today.getMinutes(), Today.getSeconds())).getTime(); Target_Date = (new Date(year, month, day, hour, minute, 00)).getTime(); Time_Left = Math.round((Target_Date - Todays_Date) / 1000); if(Time_Left < 0) Time_Left = 0; days = Math.floor(Time_Left / (60 * 60 * 24)); Time_Left %= (60 * 60 * 24); hours = Math.floor(Time_Left / (60 * 60)); Time_Left %= (60 * 60); minutes = Math.floor(Time_Left / 60); Time_Left %= 60; seconds = Time_Left; cDay = document.getElementById("counter_day"); cHour = document.getElementById("counter_hour"); cMin = document.getElementById("counter_min"); cSec = document.getElementById("counter_sec"); cDay.innerHTML = GetFormated(days); cHour.innerHTML = GetFormated(hours); cMin.innerHTML = GetFormated(minutes); cSec.innerHTML = GetFormated(seconds); //Recursive call, keeps the clock ticking. setTimeout('countdown(' + year + ',' + month + ',' + day + ',' + hour + ',' + minute + ');', 1000); } function GetFormated(i) { if(i<10) { return "0"+i; } return i; } //--> </script> </head> <body> <span id="counter_day"></span> <span id="counter_hour"></span> <span id="counter_min"></span> <span id="counter_sec"></span> <script language="JavaScript"> <!-- countdown('07,11,05,21,00'); //-->

  • setTimeout()が使えない

    今、JavaScriptでリアルタイムで動く時計を作ってるのですが、setTimeoutが動かないため使えません。 時刻は表示するのですが、自動更新してくれません。 JavaScriptのサイトの時計は動いているんですけど、自分の作ったのだと動いてくれません。 ---- function Clock() { dd = new Date(); Year = dd.getFullYear(); Mon = dd.getMonth()+1; Date = dd.getDate(); Days = new Array("日","月","火","水","木","金","土"); Day = Days[dd.getDay()]; AMPM = ""; Hour = dd.getHours(); Min = dd.getMinutes(); Sec = dd.getSeconds(); if (Hour > 12) { Hour = dd.getHours()-12; AMPM = "午後"; } else { AMPM = "午前"; } if (Hour < 10) Hour = "0"+Hour; if (Min < 10) Min = "0"+Min; if (Sec < 10) Sec = "0"+Sec; document.myForm.Time.value = Year+"年"+Mon+"月"+Date+"日("+Day+") "+AP+Hour+"時"+Min+"分"+Sec+"秒"; setTimeout("Clock()", 1000); } ---- 「<body onLoad="Clock()">」はしています。