前提・実現したいこと
当方現在monacaでAngular jsを用いた英語のクイズアプリを作成しております。
その上で以下のような英語の並び替え問題を作成したいと考えております。
①ランダムに並べられた単語ボタンをクリックすると順にtextareaに単語が入力される。
②単語がクリックされるとその単語ボタンが非表示になる。
③"1語戻す"ボタンをクリックすると単語ボタンをクリックした順にtextareaから入力された
単語を削除、同時に単語ボタンの再表示。
現在①②の実装は完成したのですが③の実装をどのような方法で進めればよいか分からず困っております。ネットで検索を繰り返しましたが、分からず埒が明かないため、この場で質問させていただこうと考えました。
どのような方法を用いればよいかを教えていただければ幸いです。よろしくお願いいたします。
イメージ
該当のソースコード
html
1<ons-page> 2 <div ng-controller="gameCtrl as game"> 3 <ons-toolbar> 4 <div class="center"> 5 試作 6 </div> 7 </ons-toolbar> 8 <div class="question"> 9 <p> 10 {{game.items.currentQ.text}} 11 </p> 12 </div> 13 <div class="answerForm"> 14 <textarea class="textarea" style= "font-size:20px"; id="hoge" name="text" ></textarea> 15 </div> 16 <div class="choices"> 17 <ons-row> 18 <div ng-repeat="choice in game.items.currentQ.choices track by $index"> 19 <div class="choice"> 20 <button class="button" id="{{$index}}" ng-click="game.add($index);game.hide($index)">{{choice}}</button> 21 </div> 22 </div> 23 </ons-row> 24 </div> 25 <div class="bottom"> 26 <button class="button" ng-click="game.back()"> 27 1語戻す 28 </button> 29 </div> 30 </div> 31</ons-page>
JavaScript
1var app = angular.module('myApp',['onsen']); 2app.controller('gameCtrl',function(questionsService,$scope){ 3 var me = this; 4 me.items = {}; 5 var rightNum = 0;// 6 var anserNum = null; 7 var questions = null; 8 9 var init = function(){ 10 me.items.currentNum = 0; 11 questions = JSON.parse(JSON.stringify(questionsService.questions)); 12 me.items.totalNum = questions.length; 13 questionInit(); 14 } 15 16 var questionInit = function(){ 17 var currentQ = questions[me.items.currentNum];/ 18 var qLength = currentQ.choices.length; 19 me.items.currentQ = currentQ; 20 }; 21 22 23 me.add=function($index){ 24 document.getElementById('hoge').value+=me.items.currentQ.choices[$index]; 25 }; 26 27 me.hide=function($index){ 28 document.getElementById(`{$index}`).style.visibility="hidden"; 29 }; 30 31 me.back=function($index){ 32 document.getElementById(`{$index}`).style.visibility="visible"; 33 }; 34 35 init(); 36});
JavaScript
1// service 2app.value('questionsService', { 3 questions : [ 4 { 5 "text": "あなたは毎日英語を勉強しなければなりません。", 6 "answer": "You must study English every day ", 7 "choices": ["You ","English ","must ","every ","study ","day "] 8 }, 9 ] 10});
試したこと
me.back=function(){
document.getElementById({$index}
).style.visibility="visible";
};
上記のように入力しましたが、直前にクリックした単語ボタンのindexを記憶していないため、当然うまくいきません。どのような方法を用いれば実現できるでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/16 13:22
2020/12/16 13:41
2020/12/31 08:57