teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

onsen ui を使用した場合のページのhtmlを掲載しました。

2020/03/29 01:24

投稿

hitomi_
hitomi_

スコア10

title CHANGED
File without changes
body CHANGED
@@ -1,14 +1,235 @@
1
1
  スマホアプリでtoastを実装したいと思い、OnsenUIのtoastを書いてみたのですが、toastの表示位置がスクロールしない状態の最下部で固定されています。
2
2
  スクロールしても最下部に表示させたいのですが、色々調べてみてもわかりませんでした。
3
3
 
4
- OnsenUI以外のtoastでtoastrを使ってみましたが下記のエラーが出てしまいます。
5
- ReferenceError: Can't find variable: toastr
6
4
  ```javascript
5
+ <html lang="ja">
6
+ <head>
7
+ <meta charset="utf-8">
8
+ <meta name="viewport" content="width=device-width, user-scalable=no">
9
+ <link rel="stylesheet" href="css/style.css">
10
+ </head>
11
+ <body data-role="none" class="body">
12
+ <header class="header">
13
+ <img src="img/header.png" class="header-image">
14
+ </header>
15
+ <div class="siteContent">
16
+ <div class="input_data_your_data">
17
+ <h3 data-role="none">アカウント情報の入力</h3>
18
+ <div class="contact-form">
19
+ <!-- Form -->
20
+ <div class="bottom_space">
21
+ <form data-role="none" id="account" method="post" action="#">
22
+ <table data-role="none" class="your_form_table" id="your-form-table">
23
+ <tr data-role="none" class="your_form_tr">
24
+ <th data-role="none" class="your_form_left">
25
+ <label data-role="none" for="service_name">
26
+ サービス名
27
+ </label>
28
+ </th>
29
+ <td data-role="none" class="your_form_right">
30
+ <input data-role="none" type="text" name="service_name_0" id="service_name_0" class="your_input_text">
31
+ </td>
32
+ </tr>
33
+ <tr data-role="none">
7
- <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
34
+ <td data-role="none" class="your_bar" colspan="2"></td>
35
+ </tr>
36
+ <tr data-role="none" class="your_form_tr">
37
+ <th data-role="none" class="your_form_left">
38
+ <label data-role="none" for="service_id">
39
+ ログインID
40
+ </label>
41
+ </th>
42
+ <td data-role="none" class="your_form_right">
43
+ <input data-role="none" type="text" name="service_id_0" id="service_id_0" class="your_input_text">
44
+ </td>
45
+ </tr>
46
+ <tr data-role="none">
47
+ <td data-role="none" class="your_bar" colspan="2"></td>
48
+ </tr>
49
+ <tr data-role="none" class="your_form_tr">
50
+ <th data-role="none" class="your_form_left">
51
+ <label data-role="none" for="service_pass">
52
+ パスワード
53
+ </label>
54
+ </th>
55
+ <td data-role="none" class="your_form_right">
56
+ <input data-role="none" type="text" name="service_pass_0" id="service_pass_0" class="your_input_text">
57
+ </td>
58
+ </tr>
59
+ </table>
8
- <link href="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css" rel="stylesheet" />
60
+ <input data-role="none" class="btn-flat-double-border-tsuika" id="account_0" type="button" onClick="Add(this);" value="登録する">
61
+ </form>
62
+ <div data-role="none" id="addtable">
63
+ </div>
64
+ <div class="bottom_space">
9
- <script src="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js"></script>
65
+ <input data-role="none" class="btn-flat-double-border-tsuika" id="add" type="button" onclick="AddTable();" value="アカウントを追加する">
66
+ </div>
67
+ <div>
68
+ <a data-role="none" href="your_data.html" class="btn-circle-border-simple">
69
+ 戻る
70
+ </a>
71
+ </div>
72
+ </div>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ <script language="javascript" type="text/javascript">
77
+ var i = 0 ;
78
+ //読み込み時処理
79
+ document.addEventListener('DOMContentLoaded', function() {
80
+ Load();
81
+ }, false);
82
+ document.addEventListener('deviceready', function() {
83
+ Load();
84
+ }, false);
10
85
 
86
+ function Load(){
87
+ //ローカルストレージの読み込み
88
+ var argument_service_name = localStorage.getItem('service_name_' + i );
11
- <script language="javascript" type="text/javascript">
89
+ var argument_service_id = localStorage.getItem('service_id_' + i );
90
+ var argument_service_pass = localStorage.getItem('service_pass_' + i );
91
+ //変数に中身があるか確認
92
+ while(argument_service_name !== null) {
93
+ //ローカルストレージから挿入
94
+ document.getElementById('service_name_' + i ).value = argument_service_name;
95
+ document.getElementById('service_id_' + i ).value = argument_service_id;
96
+ document.getElementById('service_pass_' + i ).value = argument_service_pass;
97
+ //次のテーブルを作成、カウントアップ
98
+ AddTable();
99
+ //ローカルストレージの再読み込み
100
+ argument_service_name = localStorage.getItem('service_name_' + i );
101
+ argument_service_id = localStorage.getItem('service_id_' + i );
102
+ argument_service_pass = localStorage.getItem('service_pass_' + i );
103
+ }
104
+ }
105
+
106
+ //アカウント入力欄を追加する
107
+ function AddTable(){
108
+ i ++;
109
+ var newForm = document.createElement('form');
110
+ newForm.id = 'account_' + i;
111
+ newForm.className = 'data-role-none';
112
+
113
+ var service_name = document.createElement('input');
114
+ service_name.type = 'text';
115
+ service_name.id = 'service_name_' + i;
116
+ service_name.className = 'data-role-none';
117
+ service_name.className = 'your_input_text';
118
+
119
+ var service_id = document.createElement('input');
120
+ service_id.type = 'text';
121
+ service_id.id = 'service_id_' + i;
122
+ service_id.className = 'data-role-none';
123
+ service_id.className = 'your_input_text';
124
+
125
+ var service_pass = document.createElement('input');
126
+ service_pass.type = 'text';
127
+ service_pass.id = 'service_pass_' + i;
128
+ service_pass.className = 'data-role-none';
129
+ service_pass.className = 'your_input_text';
130
+
131
+ var div = document.createElement('div');
132
+ div.className = 'data-role-none';
133
+ div.className = 'bottom_space';
134
+
135
+ var table = document.createElement('table');
136
+ table.className = 'data-role-none';
137
+ table.className = 'your_form_table';
138
+ table.id = 'your_form_table'
139
+
140
+ var tr1 = document.createElement('tr');
141
+ tr1.className = 'your_form_tr';
142
+ tr1.className = 'data-role-none';
143
+ var tr2 = document.createElement('tr');
144
+ tr2.className = 'data-role-none';
145
+ tr2.className = 'your_form_tr';
146
+ var tr3 = document.createElement('tr');
147
+ tr3.className = 'data-role-none';
148
+ tr3.className = 'your_form_tr';
149
+
150
+ var th1 = document.createElement('th');
151
+ th1.className = 'data-role-none';
152
+ th1.className = 'your_form_left';
153
+ var th2 = document.createElement('th');
154
+ th2.className = 'data-role-none';
155
+ th2.className = 'your_form_left';
156
+ var th3 = document.createElement('th');
157
+ th3.className = 'data-role-none';
158
+ th3.className = 'your_form_left';
159
+
160
+ var td1 = document.createElement('td');
161
+ td1.className = 'data-role-none';
162
+ td1.className = 'your_form_right';
163
+ var td2 = document.createElement('td');
164
+ td2.className = 'data-role-none';
165
+ td2.className = 'your_form_right';
166
+ var td3 = document.createElement('td');
167
+ td3.className = 'data-role-none';
168
+ td3.className = 'your_form_right';
169
+
170
+ var lavel1 = document.createElement('lavel');
171
+ lavel1.className = 'lavel1'
172
+ var lavel2 = document.createElement('lavel');
173
+ lavel2.className = 'lavel2'
174
+ var lavel3 = document.createElement('lavel');
175
+ lavel3.className = 'lavel3'
176
+
177
+ var tr_bar1 = document.createElement('tr');
178
+ var td_bar1 = document.createElement('td');
179
+ td_bar1.className = 'data-role-none';
180
+ td_bar1.className = 'your_bar';
181
+ td_bar1.colSpan = '2';
182
+
183
+ var tr_bar2 = document.createElement('tr');
184
+ var td_bar2 = document.createElement('td');
185
+ td_bar2.className = 'data-role-none';
186
+ td_bar2.className = 'your_bar';
187
+ td_bar2.colSpan = '2';
188
+
189
+ var button = document.createElement('input');
190
+ button.className = 'data-role-none';
191
+ button.className = 'btn-flat-double-border-tsuika';
192
+ button.type = 'button';
193
+ button.id = 'account_' + i;
194
+ button.value = '登録する'
195
+ button.onclick = function(){
196
+ Add(this);
197
+ };
198
+
199
+ var parent = document.getElementById('addtable');
200
+
201
+ parent.appendChild(div);
202
+ div.appendChild(newForm);
203
+ newForm.appendChild(table);
204
+
205
+ table.appendChild(tr1);
206
+ tr1.appendChild(th1);
207
+ th1.appendChild(lavel1);
208
+ lavel1.innerHTML = "サービス名";
209
+ tr1.appendChild(td1);
210
+ td1.appendChild(service_name);
211
+ table.appendChild(tr_bar1);
212
+ tr_bar1.appendChild(td_bar1);
213
+
214
+ table.appendChild(tr2);
215
+ tr2.appendChild(th2);
216
+ th2.appendChild(lavel2);
217
+ lavel2.innerHTML = "ログインID";
218
+ tr2.appendChild(td2);
219
+ td2.appendChild(service_id);
220
+ table.appendChild(tr_bar2);
221
+ tr_bar2.appendChild(td_bar2);
222
+
223
+ table.appendChild(tr3);
224
+ tr3.appendChild(th3);
225
+ th3.appendChild(lavel3);
226
+ lavel3.innerHTML = "パスワード";
227
+ tr3.appendChild(td3);
228
+ td3.appendChild(service_pass);
229
+
230
+ newForm.appendChild(button);
231
+ }
232
+
12
233
  //ローカルストレージに保存する
13
234
  function Add(account_no) {
14
235
  //フォームナンバーを変数に入れる
@@ -24,48 +245,19 @@
24
245
  localStorage.setItem('service_id_' + idNo, serviceId);
25
246
  localStorage.setItem('service_pass_' + idNo, servicePass);
26
247
 
27
- //オンラインストレージに登録
28
- var account = monaca.cloud.Collection("Account");
29
- console.log(idNo);
30
-
31
- account.findOneMine(monaca.cloud.Criteria("idno==?", [idNo]), {propertyNames: ["idno", "service_name", "service_id", "service_pass"]})
32
- .done(function(item)
33
- {
34
- if(item != null){
35
- item.service_name = serviceName;
36
- item.service_id = serviceId;
37
- item.service_pass = servicePass;
38
- item.update('success')
39
- .done(function(result)
40
- {
41
- console.log('Updating success');
42
- callDialog();
248
+ callDialog();
43
- })
249
+ }
44
- .fail(function(err)
45
- {
46
- console.log("Err#" + err.code +": " + err.message);
47
- });
48
- } else {
49
- account.insert({ idno: idNo, service_name: serviceName, service_id: serviceId, service_pass: servicPass})
50
- .done(function(insertedItem)
250
+ function callDialog(){
51
- {
52
- console.log('Insert is success!');
251
+ ons.notification.toast('Hi there!', { timeout: 1000, animation: 'ascend' });
53
- })
54
- .fail(function(err)
55
- {
56
- console.log('Insert failed!');
57
- })
58
252
  }
59
- })
60
- .fail(function(err)
61
- {
62
- });
63
- function callDialog(){
64
- toastr.info('登録完了'); 
65
-  }
66
253
  </script>
254
+ </body>
255
+ </html>
67
256
  ```
68
257
 
258
+ OnsenUI以外のtoastでtoastrを使ってみましたが下記のエラーが出てしまいます。
259
+ ReferenceError: Can't find variable: toastr
260
+
69
261
  同じく、iziToastを試しても同じエラーが出ました。
70
262
  ReferenceError: Can't find variable: iziToast
71
263
 

1

環境を追記しました

2020/03/29 01:24

投稿

hitomi_
hitomi_

スコア10

title CHANGED
@@ -1,1 +1,1 @@
1
- Onsen UIのtoastをスクロールしてもページ下部に表示させたい
1
+ toastをスクロールしても常に画面下部に表示たい
body CHANGED
@@ -69,4 +69,7 @@
69
69
  同じく、iziToastを試しても同じエラーが出ました。
70
70
  ReferenceError: Can't find variable: iziToast
71
71
 
72
+ 環境:monacaIDE monacaデバッガー iphone7
73
+
72
- どのような方法でも良いので、スクロールしても画面下部に表示されるtoastの実装の仕方を教えてください。お願いします。
74
+ どのような方法でも良いので、スクロールしても画面下部に表示されるtoastの実装の仕方を教えてください。
75
+ お願いします。