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

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

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

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

Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

1回答

1914閲覧

ons-carouselのsetActiveIndex()が効かない

T_Furuta

総合スコア25

JavaScript

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

Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

0クリップ

投稿2019/07/22 03:07

編集2019/07/23 09:17

現在、Monacaでアプリ開発をしております。
ons-Carouselを使用して、8枚の画面(設問)を予め作成しておき、ons-Carousel以外の画面からボタンを押すと、該当する画面が表示されるような仕組みを作成しようとしています。
で、テストをしてみたのですが、始めの一回目は意図した画面に移動するのですが、2回目以降必ず1枚目の画面(設問1)になってしまいます。
ちなみに、変更後の「carousel.getActiveIndex()」の値も取ってみたのですが、ActiveIndexの値自体は指定した値に変わっていました。
画面だけ反映されていないように見えるのですが、問題点お分かりの方ご指摘頂きますと幸いです。
よろしくお願いいたします

2019/07/23 追記
下記ソースコードの verificationClick()ボタン押す画面を呼び出す時、pushPageで呼び出すのではなく、resetToPageで呼び出すと、正常に動作します。
pushPageだと、'page.html'は後ろに残ったままですが、resetToPageにすると呼び出したページ以外は全て破棄されるため、一回目に呼び出したのと同じ扱いになるため、ActiveIndexが効くのではないかと思います。

html

1 2function verificationClick(button) { 3 switch(button.title) 4 { 5 case '設問1': 6 localStorage.setItem('question', 0) 7 break; 8 case '設問2': 9 localStorage.setItem('question', 1) 10 break; 11 case '設問3': 12 localStorage.setItem('question', 2) 13 break; 14 case '設問4': 15 localStorage.setItem('question', 3) 16 break; 17 case '設問5': 18 localStorage.setItem('question', 4) 19 break; 20 case '設問6': 21 localStorage.setItem('question', 5) 22 break; 23 case '設問7': 24 localStorage.setItem('question', 6) 25 break; 26 case '設問8': 27 localStorage.setItem('question', 7) 28 break; 29 } 30 document.querySelector('#navi').pushPage('page.html'); 31} 32 33 34document.addEventListener('show', function (event) { 35 let page = event.target; 36 if (page.id == "page") { 37 page_show(); 38 } 39}); 40 41//画面初期化 42function page_show() { 43 var carousel = document.getElementById('carousel'); 44 var options = { 45 // none or lift 46 animation: "none", 47 animationOptions: {duration: 0.5, timing: 'ease-in'} 48 } 49 let question = localStorage.getItem('question'); //設問 50 try { 51 console.log("変更前:" + question); 52 carousel.setActiveIndex(Number(question), options) 53 console.log("変更後:" + carousel.getActiveIndex()); 54 } 55 catch(e){ 56 console.log(e); 57 } 58}; 59

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

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

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

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

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

guest

回答1

0

自己解決

結局原因は不明だったので、pushPageではなくresetToPageを使用する事にしました。
ただ、ons-back-buttonを使用出来なくなるため、前に戻る画面を新たに作成する事にしました。

投稿2019/08/03 02:11

T_Furuta

総合スコア25

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問