Smartyでのスライド表示の問題

このQ&Aのポイント
  • Smartyで作成したブログ内でのJavaScriptを使用したスライド表示の問題について
  • 1つのスライドのみが動作してしまう問題について解決方法を教えてください
  • お願いします
回答を見る
  • ベストアンサー

Smarty のループ内で、javascript 

Smarty でブログを作成しており、 section 内に、 javascript でスライドをつけました。 しかし、1個めのスライドだけしか、動きません。 方法ご存知か方がおられましたら、お助け願います。 どうかよろしくお願い致します。 <div class="content"> {section name=tloop loop=$topics max=$settings.maxtopics} {if $topics[tloop].title != ''} {$topics[tloop].bodyf} <!--********************************************--> <div id="slide"> <button id="btn3"> 詳細 </button> <div style="display:none; height:100%; width:100%; background-color:#ffffff"> <!--詳細情報--> {$topics[tloop].bodyf2} </div> </div> <script type="text/javascript"> {literal} jQuery(function($){ var target = $("div", "#slide"); $("#btn3").click(function(){ if (target.is(":hidden")) { target.slideDown(); } else { target.slideUp(); } }) }); {/literal} </script> <hr> <!--********************************************--> {/if} {/section} </div> </body> </html>

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

ざっくり見ただけですが、 > <button id="btn3"> と > $("#btn3").click(function(){ の「btn3」をループする度に違うIDにすればいいと思いますよ。 試して無いですが、こんな感じかな。 <button id="btn{$smarty.section.tloop.index}"> $("button[id^='btn']").click(function(){

hatokamome
質問者

お礼

ありがとうございます。 出来ました。(^^)

関連するQ&A

  • 2度押し防止のJavascript

    先日、「買い」のボタンを押すと、100購入~800購入までがずらりと出てくるJavascriptをこちらでお教えいただきました。(ONEONE様 有難うございます) その際、「買いのボタン」の2度押し防止スクリプトも同時に組んでいただきました。 それが末尾のスクリプトになります。 質問 買いボタンの2度押し防止は出来ていますが、100購入 200購入 300購入の連続買いができてしまう状況です。 この連続買いの防止のjavascriptをご教示いただければと思います。 当方は、 <script type="text/javascript"> jQuery(function($){ $("#btn0").click(function (e) { e.preventDefault(); $("#kai").show(); $(this).prop("disabled", true); }); $("#b_btn").click(function (e) { $(this).prop("disabled", true); }); }); </script> としてみたのですが、うまく行きませんでした。よろしくお願いいたします。 *************************************************************************** 現状 (買いボタンの2度押し防止は機能しているが     100購入 200購入の連続買いができる状態) *************************************************************************** <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <form action="abc.cgi" method="post" name="form1" id="form1"> <button id="btn0">買い</button> <div id="kai" style="display:none"> <button id="b_btn" type="submit" name="b100" value="100">100購入</button><br> <button id="b_btn" type="submit" name="b200" value="200">200購入</button><br> <button id="b_btn" type="submit" name="b300" value="300">300購入</button><br> <button id="b_btn" type="submit" name="b400" value="400">400購入</button><br> <button id="b_btn" type="submit" name="b500" value="500">500購入</button><br> <button id="b_btn" type="submit" name="b600" value="600">600購入</button><br> <button id="b_btn" type="submit" name="b700" value="700">700購入</button><br> <button id="b_btn" type="submit" name="b800" value="800">800購入</button><br> </div> </form> <BR> <script type="text/javascript"> jQuery(function($){ $("#btn0").click(function (e) { e.preventDefault(); $("#kai").show(); $(this).prop("disabled", true); }); }); </script> ***********************************************************************

  • jquery教えて下さい。

    現在、 <script type="text/javascript"> $(function(){ $("#btn1","#test2").click(function () { $("div","#test2").slideDown(3000); }); }); </script> のコードで btn1のidボタン▼をクリックすると test2がslidedownするコードを造っているのですが これをボタンを押さずに ページがひらいたと同時にスライドするにはどのように すればよろしいでしょうか? 宜しくお願いします。 <div id="test2"> <div style="display:none;"><div class="slide"> <ul> <li class="setsumei1">test1</li> <li class="setsumei1">test2</li> <li class="setsumei1">test3</li> <li class="setsumei1">test4</li> </ul> </div></div> <div id="btn1">▼</div> </div>

  • javascriptの動的読み込みについて教えてください

    javascriptの動的読み込みについて教えてください いつもお世話になります。 jqueryを勉強中のものです。 少しややこしいのですが、 以下のmenu.htmlとmain.htmlを持ったframe.htmlで、メニューの試験ボタンを押してmain.htmlの<div id="target_id">にload.htmlを動的に読み込んだ時、loadされたhelloボタンが作動しません。 menu.htmlのtest()中のalert(data);でload.htmlの<script>が読み込まれていることは確認できるのですが・・何が原因でどこが悪いのでしょうか? よろしくご指導お願いします。 frame.html ----------------------------------------------------------- <html> <head> <title>Dynamic Load Test</title> </head> <frameset name="frame" cols="180,*"> <frame name="menu" src="menu.html"> <frame name="MainPanel" src="main.html"> </frameset> </html> ----------------------------------------------------------- menu.html ----------------------------------------------------------- <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"><!-- function test(){ jQuery.get("./load.html",function(data){ alert(data); $("#target_id",window.parent.MainPanel.document).html(data); }); } // --></script> </head> <body> <button onClick="test();">試験</button> </body> </html> ----------------------------------------------------------- main.html ----------------------------------------------------------- <html> <head> </head> <body> <h1>main.html</h1> </body> <div id="target_id"></div> </html> ----------------------------------------------------------- load.html ----------------------------------------------------------- <h1>load.html</h1> <script type="text/javascript"><!-- function hello(){ alert("こんにちわ"); } // --></script> <button onClick="hello();">hello</button> -----------------------------------------------------------

  • Javascriptを短くしたい

    初歩的なことですみません。 Javascriptで表示/非表示を切り替えるものを作ろうと思うのですが、 以下のサンプル文のような形では、項目数が増えるとその分だけ どんどんJavascriptも長くなっていってしまいます。 Javascript文を簡潔にするには、どのように記述すればよいのでしょうか。 よろしくお願いします。 <script type="text/javascript"> <!-- function Hyo1(num) { if (num == 0) { document.getElementById("cont1").style.display="block"; } else { document.getElementById("cont1").style.display="none"; } } function Hyo2(num) { if (num == 0) { document.getElementById("cont2").style.display="block"; } else { document.getElementById("cont2").style.display="none"; } } // --> </script> <div id="cont1">ああああああ</div> <form> <input type="button" value="表示" onclick="Hyo1(0)"> <input type="button" value="非表示" onclick="Hyo1(1)"> </form> <form> <div id="cont2">いいいいいい</div> <input type="button" value="表示" onclick="Hyo2(0)"> <input type="button" value="非表示" onclick="Hyo2(1)"> </form>

  • マスターページ使用時のJavascript

    vs2012 c#で作成しています。 下記のjavascriptをマスターページを使用したContentPlaceHolderID何に記述し、 playボタンを押すと、再生されません。 (正確には再生直後にリロードが発生しているように見えます) 通常のhtmlページでhead内に書くと問題なく再生できるのですが、 なぜこうなるのか教えて下さい。 <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage2.master" AutoEventWireup="true" CodeFile="test3.aspx.cs" Inherits="test3" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderContent" Runat="Server"> <div> <input id="file" name="file" type="file" onchange="preview()" class="form-control" /> </div> <div class="flex-video widescreen" style="margin: 0 auto; text-align: center;"> <video id="video" class="videoUiWrapper thumbnail" controls loop muted preload="auto" ></video> </div> <div> <button id="btnPlay" onclick="playVideo()" class="btn btn-primary">play</button> <button id="btnPause" onclick="pauseVideo()" class="btn btn-primary" >pause</button> </div> <script type="text/javascript"> function preview() { var fileData = document.getElementById("file").files[0]; if (fileData.name != "") { tryVideo(fileData); } } function tryVideo(file) { if (!/video/.test(file.type)) { return alert('videoぢゃない'); } if (!/probably|maybe/.test(video.canPlayType(file.type))) { return alert('再生できる動画ファイルぢゃないyo'); } video.src = URL.createObjectURL(file); } function playVideo() { video.play(); } function pauseVideo() { video.pause(); } </script> </asp:Content>

  • CSS + Javascript でスライドショー

    手動で画像を順番に表示させる、スライドショーのような表現を作ろうとしています。 色々なサイトを参考に見よう見まねで作成してみたのですが、 途中でうまくいかずに行き詰っております(´・ω・`) [XHTML] <body onload="seltab(0)"> <!-- 順番に表示させる内容 --> <div id="slide" name="slide"><p>1</p></div> <div id="slide" name="slide"><p>2</p></div> <div id="slide" name="slide"><p>3</p></div> <div id="slide" name="slide"><p>4</p></div> <div id="slide" name="slide"><p>5</p></div> <!-- ページ切り替え操作部分 --> <a href="javascript:seltab(-10000)">first</a> <a href="javascript:seltab(-1)">back</a> <a href="javascript:seltab(1)">next</a> <a href="javascript:seltab(10000)">last</a> [Javascript] var selected = 0; function seltab(move) { o = document.getElementsByName("slide"); selected = selected + move; if (selected < 0) {selected = 0} if (selected >= o.length) {selected = o.length - 1} for (i = 0; i < o.length; i++) { if (i == selected) { o[i].style.display = "block"; } else { o[i].style.display = "none"; } } } このやり方で一応動作はしています(WIN IE + WIN Firefox にて確認) が、id が同じページ内で重複している点と、div に name を付ける点で、構文チェックに引っ掛かってしまう為、できればそれを回避したいなと思っています。 同じ動作が作れれば、Javascript の処理方法に特に拘りはありません。 お分かりになる方がいらっしゃれば、ぜひぜひご指導お願いします。

  • JavaScriptでスライドページを作る

    JavaScriptでスライドページを作りたいの ですが <SCRIPT language=JavaScript> <!-- function cc(slide) { dis=Math.abs(600/slide); while(dis>0) { dis--; scrollBy(slide,0); } } //--> </SCRIPT> ↑だと横にスクロールが出来るのですが 下にスクロールさせるにはどのように すればよいのでしょうか? どなたかご教授お願いしますm(_ _)m

  • アニメーションをループさせたい

    すみませんjquery初心者です。 下記の様な簡単なスライドショーを作りたいのですが、 ---------------------------------------------------------------- <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.js"></script> <script> setTimeout(function() { $(".slide01").hide(); $(".slide02").show(); }, 3000); setTimeout(function() { $(".slide02").hide(); $(".slide03").show(); }, 6000); setTimeout(function() { $(".slide03").fadeOut(2000); $(".slide04").fadeIn(2000); }, 9000); setTimeout(function() { $(".slide04").fadeOut(2000); $(".slide01").fadeIn(2000); }, 15000); </script> <style> p.slide01, p.slide02, p.slide03, p.slide04 { position: absolute; } </style> <div class="slide"> <p class="slide01"><img src="images/image01.jpg" alt="" /></p> <p class="slide02" style="display:none;"><img src="images/image02.jpg" alt="" /></p> <p class="slide03" style="display:none;"><img src="images/image03.jpg" alt="" /></p> <p class="slide04" style="display:none;"><img src="images/image04.jpg" alt="" /></p> </div> ---------------------------------------------------------------- 下記の様にループさせようとすると何やら挙動がおかしくなってしまいます。。 ---------------------------------------------------------------- setInterval( function () { setTimeout(function() { $(".slide01").hide(); $(".slide02").show(); }, 3000); setTimeout(function() { $(".slide02").hide(); $(".slide03").show(); }, 6000); setTimeout(function() { $(".slide03").fadeOut(2000); $(".slide04").fadeIn(2000); }, 9000); setTimeout(function() { $(".slide04").fadeOut(2000); $(".slide01").fadeIn(2000); }, 15000); },0); ---------------------------------------------------------------- どのようにすればループさせることが出来るのでしょうか? ご教授頂けると非常に助かります。 よろしくお願いします。

  • ボタンを押すとデータ表示、再度押すと非表示

    ボタンを押すとデータが表示されるjqueryを利用したjavascriptがあります。 このボタンを再度クリックすると非表示にしたいと考えています。 奇数回クリック=表示 偶数回クリック=非表示 という形です。 ご教授いただきたくお願いいたします。 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <script type="text/javascript"> jQuery(function($){ $("#btn0").click(function (e) { e.preventDefault(); $("#data").show(); }); </script> <button class="button18" id="btn0">ボタン</button> <div id="data" style="display:none"> データ </div>

  • hide();について

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script> jQuery(function($){ $('#target01').hide(); $('button','#id01').click(function(){ $('#target01').toggle('slow'); }); }); </script> <div id="id01"> <button>押してくれ</button> <div id="target01">文章</div> </div> 読み込みが完了するまで「文章」が表示されます。 読み込み時も非表示したいのですが可能でしょか?? 宜しく御願いします。

専門家に質問してみよう