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

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

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

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

HTML

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

Onsen UI

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

Q&A

解決済

1回答

364閲覧

再読込時のvalue値初期化について

satosatope

総合スコア12

JavaScript

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

HTML

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

Onsen UI

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

0グッド

0クリップ

投稿2018/01/12 02:24

編集2018/01/12 14:43

以下のようなHTMLとJavaScriptを用いてアプリを開発しています。ページを4回再読込して表示させていますが、その際関数内でlogを表示させると前のページで選択された項目のvalue値も表示されてしまいます。

毎回、初期化された状態でvalue値を取得するにはどうすればよいのでしょうか。

よろしくお願いします。

html

1<ons-template id="q1.html"> 2 <ons-page> 3 <ons-toolbar> 4 <div class="left"> 5 <ons-back-button>Back</ons-back-button> 6 </div> 7 <div class="center">Q1</div> 8 </ons-toolbar> 9 10 <ons-list> 11 <ons-list-header>リスト</ons-list-header> 12 <ons-list-item tappable> 13 <label class="left"> 14 <ons-checkbox name="q11" value="q101"></ons-checkbox> 15 </label> 16 <label for="check-1" class="center">りんご</label> 17 </ons-list-item> 18 <ons-list-item tappable> 19 <label class="left"> 20 <ons-checkbox name="q11" value="q102"></ons-checkbox> 21 </label> 22 <label for="check-2" class="center">ぶどう</label> 23 </ons-list-item> 24 <ons-list-item tappable> 25 <label class="left"> 26 <ons-checkbox name="q11" value="q103"></ons-checkbox> 27 </label> 28 <label for="check-3" class="center">みかん</label> 29 </ons-list-item> 30 <ons-list-item tappable> 31 <label class="left"> 32 <ons-checkbox name="q11" value="q104"></ons-checkbox> 33 </label> 34 <label for="check-4" class="center">なし</label> 35 </ons-list-item> 36 <ons-list-item tappable> 37 <label class="left"> 38 <ons-checkbox name="q11" value="q105"></ons-checkbox> 39 </label> 40 <label for="check-5" class="center">いちご</label> 41 </ons-list-item> 42 <ons-list-item tappable> 43 <label class="left"> 44 <ons-checkbox name="q11" value="q106"></ons-checkbox> 45 </label> 46 <label for="check-6" class="center">かき</label> 47 </ons-list-item> 48 </ons-list> 49 50 <div style="text-align: center"> 51 <br /> 52 <ons-button modifier="light" onclick="checkq1()"> 53 次へ 54 </ons-button> 55 </div> 56 </ons-page> 57 </ons-template>

js

1function checkq1() { 2 console.log("in checkq1."); 3 4 var ans = 0; 5 6 var checkboxq1 = document.getElementsByName('q11'); 7 for(var i = 0; i < checkboxq1.length; i++){ 8 if(checkboxq1[i].checked){ 9 console.log("value: " + checkboxq1[i].value); 10 ans++; 11 } 12 }; 13 ans = ans/2; 14 console.log(ans); 15 16 if (count < 4) { 17 myNavigator.pushPage('q1.html', { animation : 'slide' } ); 18 } else { 19 countReset(); 20 myNavigator.pushPage('q2.html', { animation : 'slide' } ); 21 }; 22 };

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

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

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

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

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

guest

回答1

0

ベストアンサー

OnsenUIをご利用ですね。
チェックボックスの値を確認する際のdocument.getElementsByName('q11');では、ドキュメント全体の[name="q11"]が対象となります。
myNavigator.pushPageは、q1.htmlの中身をテンプレートとした"要素"がドキュメントに追加されます。
その為、ページを追加する度にq1.htmlの中にある[name="q11"]の要素も増え、結果的に「前のページで選択された項目のvalue値」も出力されているのではないかと思います。

「毎回、初期化された状態でvalue値を取得する」方法は色々ありますが、ページを離れる際に処理をするのであれば

html

1<ons-template id="q1.html"> 2 <!-- ons-pageのIDを"q1"に設定 --> 3 <ons-page id="q1"> 4 ...省略 5 </ons-page> 6</ons-template> 7

javascript

1// ページが追加された際に呼び出されるイベント 2document.addEventListener('init', function(e) { 3 // page = myNavigator.pushPage実行時に追加されたページ(要素)のDOM 4 var page = e.target; 5 6 // 追加されたページのIDが "q1" の時 7 if (page.id === 'q1') { 8 // ons-pageのイベントを利用 9 // hideはページが隠れる時 = myNavigator.pushPage 実行時に発火 10 // https://ja.onsen.io/v2/api/js/ons-page.html#event-hide 11 page.addEventListener('hide', function() { 12 13 var checkboxq1 = this.querySelectorAll('[name="q11"]'); 14 for(var i = 0; i < checkboxq1.length; i++){ 15 if(checkboxq1[i].checked){ 16 console.log("value: " + checkboxq1[i].value); 17 } 18 }; 19 20 }, false); 21 } 22}, false);

document.addEventListener('init')は、OnsenUIが読み込まれた後に一度実行すれば問題ないかと思います。
動作は確認していないので、スペルミスや処理に間違いがあるかもしれませんが参考になれば・・・!

投稿2018/01/12 14:07

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

satosatope

2018/01/12 14:44

ありがとうございました。解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問