質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

977閲覧

javascriptにて タイマーの使い方

ROONIN

総合スコア22

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/10/12 02:57

前提・実現したいこと

javascriptでの質問です

はじめまして
初心者で、わからないことだらけで
教えてください

現在 ラジオボタンのチェックが入ったら
div要素を表示させ

タブみたいなのを作っていて

スタートボタンを押すと
自動でチェックが入り
スライドショーみたいな感じで
DIVを表示させたのですが

イマイチsetIntervalが理解できず

色々なやり方を見てもできず
お力を・・・

test関数を start_btをクリックしたら
タイマーを動かし呼び出すとやっていますが

test関数で どのように
繰り返して
checked,trueをするのかわからず

もちろん 最後までいったら
また最初にもどらなければならいので

アドバイスをよろしくお願い致します。

該当のソースコード

$(function(){
$("#start_bt").click(function(){
setInterval("test()",1000);
});

function test() {
$("#tes0").prop("checked",true);
$("#tes1").prop("checked",true);
$("#tes2").prop("checked",true);
$("#ltes3").prop("checked",true);
$("#tes4").prop("checked",true);
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんな感じですかね

CSS

1#div0{background-Color:yellow;} 2#div1{background-Color:lime;} 3#div2{background-Color:aqua;} 4#div3{background-Color:fuchsia;} 5#div4{background-Color:blue;}

javascript

1var timerId=0; 2$(function(){ 3 $('.d').hide(); 4 $("#start_bt").on('click',function(){ 5 if($(this).val()=='start'){; 6 $(this).val('stop'); 7 timerId=setInterval(function(){ 8 if($('[name=r]:checked').length==0 || $('[name=r]:last').prop('checked')){ 9 $('[name=r]:first').trigger('click'); 10 }else{ 11 $('[name=r]').eq($('[name=r]').index($('[name=r]:checked'))+1).trigger('click'); 12 } 13 },1000); 14 }else{ 15 $(this).val('start'); 16 clearInterval(timerId); 17 } 18 }); 19 $('[name=r]').on('change',function(){ 20 $('.d').hide().eq($('[name=r]').index(this)).show(); 21 }); 22});

HTML

1<label><input type="radio" name="r" value="0">tes0<br></label> 2<label><input type="radio" name="r" value="1">tes1<br></label> 3<label><input type="radio" name="r" value="2">tes2<br></label> 4<label><input type="radio" name="r" value="3">tes3<br></label> 5<label><input type="radio" name="r" value="4">tes4<br></label> 6<input type="button" value="start" id="start_bt"> 7<div id="div0" class="d">div0</div> 8<div id="div1" class="d">div1</div> 9<div id="div2" class="d">div2</div> 10<div id="div3" class="d">div3</div> 11<div id="div4" class="d">div4</div> 12

投稿2018/10/12 03:29

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ROONIN

2018/10/12 04:41

回答ありがとうございます まだ、私の知識技術だと難解ですが なんとなくやってることはわかります このサンプルを見ながら自分のと 比較してやってみましたが 上手く動きません すいません 勉強不足ですね。。
guest

0

ベストアンサー

やりたいことが微妙によくわからないのですが、

$("#tes0").prop("checked",true);
$("#tes1").prop("checked",true);
$("#tes2").prop("checked",true);
$("#ltes3").prop("checked",true);
$("#tes4").prop("checked",true);

これらを一気に実行するのではなく、時間差で実行したいということですか?
現在の書き方だと1秒後に一気にすべて check が付くという書き方になっていますね。
そして、1秒ごとに毎回上記が一気に実行されます。

ラジオボタンの数が決まっているのであれば、setInterval よりも setTimeout の方が作りやすいかもしれませんね。

投稿2018/10/12 03:09

ssasaki

総合スコア1167

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ROONIN

2018/10/12 03:13

わかりづらくてすいません $("#tes0").prop("checked",true); 5秒後 $("#tes1").prop("checked",true); 5秒後 $("#tes2").prop("checked",true); 5秒後 $("#ltes3").prop("checked",true); 5秒後 $("#tes4").prop("checked",true); 5秒後 #test1に戻る タイマーが停止するまで繰り返すです
ssasaki

2018/10/12 03:28

やはりそういうことですよね。 美しくないコードですが、まずは直感的に分かりやすい setTimeout の方を使ってみてはどうでしょうか? setTimeout("test0()",1000); function test0() { $("#tes0").prop("checked",true); setTimeout("test1()",1000); } function test1() { $("#tes1").prop("checked",true); setTimeout("test2()",1000); } ... といった感じで作れるのではないかと思いますが。 数が多かったり可変の場合には、setInterval の方が良いと思います。
ROONIN

2018/10/12 04:38

これは、1秒後に 指定要素をチェックする動作ですよね? これならわかりやすいですが 可変の場合はどうすればいいのでしょうか? これだと最後までいってしまうと 止まりますので また最初の位置に戻りたい場合は setIntervalで繰り返し処理の記述をしなければならないですよね? すいません
ssasaki

2018/10/12 05:24

最初の位置に戻るには以下のような感じでいいかと思います。 function test100() { $("#tes100").prop("checked",true); setTimeout("test0()",1000); } 可変の場合には setTimeout でも可能ですが再帰呼び出しになるので、setIntervalで実装した方が分かりやすいと思います。 ザックリ書くと、 var xxx; setInterval("test()",1000); function test() { xxx.prop("checked",true); xxx = ... //次のターゲットをセット } といった感じになるかと。
ROONIN

2018/10/12 05:58

var XXX; が保持用の変数で function test() { xxx.prop("checked",true); xxx = ... //次のターゲットをセット } 動いて 0.prop("checked",true);が作動し 保持用の変数に 1.prop("checked",true); ので繰り返すという解釈でいいですか??
ssasaki

2018/10/12 06:01

はい。その通りです。
ROONIN

2018/10/12 06:04

何回も質問すいません VB系しかやってこなかったので 変数の定義がよくわからなくて  この変数自体に$("#tes1")をいれるわけではないんですよね??
ssasaki

2018/10/12 06:08

$("xxxx") で取得できるオブジェクトそのものを変数に入れても良いですし、xxxx の部分(セレクタと言います)を変数に入れてもいいです。 非同期処理なのでセレクタを変数に入れる実装の方が無難な気はしますが。
ROONIN

2018/10/12 06:34

var temp; ver num = 0; function test() { temp.prop("checked",true); temp = $("#tes".num+1) if num<4 num = 0 } こうですかね?? 自由度がある分 理解ができなくて申し訳ないです サンプルみたいのが欲しいです
ssasaki

2018/10/12 06:41

細かい部分は置いておくとして、概ねそんな感じです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問