20 web projects by VanillaJS - 1,2,3
23466 ワード
JavaScript Vueは少ししか勉強していません残念ながらjsに移り、reactionを1人で学ぶ前に、最終的にはフレームワークやライブラリの基礎言語が重要だと感じたので、さらにJSを学びたい!
モダンjavascript本で理論を学び、理論だけを学ぶよりも、これを運用すれば学習効果が倍増すると考え、udemiでこの授業を発見し、現在授業中です.
3つ目のプロジェクトはまだ完成していませんが、この授業ではJS文法についての紹介はほとんどありませんが、このようにこれを使ってこのようにプロジェクトを作成することを学ぶことができてよかったです.最も重要なのは、フレームワークやライブラリがない場合、JSのみを使用することです.学習効果を高めるために、授業のほかに簡単なスキルも追加しました.
1. Form Validator
max:入力要素の最大値を指定する
min:input要素の最大値を指定する
Step:input要素に入力できる数字の間隔を指定します
value:input要素の初期値を指定する
Play、pauseなどは見たことのある関数や属性がたくさんあります.currentTime:現在の再生時間を秒単位で返す duration:現在のオーディオ/ビデオを返す秒長
Fast fowardとRewindボタンを作成し、各ボタンを押して、現在のビデオ時間に+5,-5秒です.現在視聴時間が5秒未満の場合は0に設定します.
モダンjavascript本で理論を学び、理論だけを学ぶよりも、これを運用すれば学習効果が倍増すると考え、udemiでこの授業を発見し、現在授業中です.
3つ目のプロジェクトはまだ完成していませんが、この授業ではJS文法についての紹介はほとんどありませんが、このようにこれを使ってこのようにプロジェクトを作成することを学ぶことができてよかったです.最も重要なのは、フレームワークやライブラリがない場合、JSのみを使用することです.学習効果を高めるために、授業のほかに簡単なスキルも追加しました.
1. Form Validator
ユーザー名、email、passwordの最小および最大長を指定し、emailの場合、フォーマットに一致するかどうかを確認し、2つのパスワードが一致することを確認します.
エラーが発生した場合は、成功した状況に応じて枠線に異なる色を付けます.エラーが発生した場合は、その部分のエラー文を表示します.
1.運転画面
1)メイン画面
2)電子メールフォーマットエラー
3)何も入力していないとき
2.プロジェクトで学んだこと
1) test()
指定された文字列が正規表現を満たしているかどうかを決定し、true
またはfalse
に変換します.function checkEmail(input){
const re = /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
if (re.test(input.value)) {
showSuccess(input);
} else {
showError(input, 'Email is not valid')
}
}
2) charAt()
このセクションの文字列を読み込みます.Pythonの[]と同じ
cf)substring(a,b)
:charatは1文字を読み出しますが、サブ文字列を読み出します.substring(1,3)
-インデックス番号1からインデックス番号3までの文字列を読み込みます.function getFieldName(input) {
return input.id.charAt(0).toUpperCase() + input.id.slice(1);
}
3) slice()
配列の最初から最後までの浅いコピーを新しい分割オブジェクトに戻します.元の配列は変更されません.
slice(begin,end)-endは含まれません.例えばspice(1,4)は1番から3番です.const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
console.log(animals.slice(2));
// 2번부터 끝까지
// expected output: Array ["camel", "duck", "elephant"]
console.log(animals.slice(2, 4));
// 2번부터 4번까지(4번 미포함)
// expected output: Array ["camel", "duck"]
console.log(animals.slice(1, 5));
// expected output: Array ["bison", "camel", "duck", "elephant"]
console.log(animals.slice(-2));
// expected output: Array ["duck", "elephant"]
console.log(animals.slice(2, -1));
// expected output: Array ["camel", "duck"]
2. Movie Seat Booking
座席を選択すると、映画の価格や選択した座席数によって、次のテキストがリアルタイムで変更されます.
LocalStorageにデータを格納し、リフレッシュしても選択した座席と映画情報を保持します.
1.運転画面
1)メイン画面
2)座席選択時
2.プロジェクトで学んだこと
1) localStorage
localStorageは文字列のみをサポートし、キーと値の形式で値を格納するため、配列を保存する場合はJSON.stringify()
JSONオブジェクトをStringオブジェクトに変換できます.逆に、localstorageからJSに値をロードする場合、JSON.parse()
関数を使用して文字列オブジェクトをJSONオブジェクトに変換できます.localStorage.setItem(key, value)
:キーとvalueを入力してlocalStorageに保存localStorage.getItem(key)
:この鍵を返す値を格納localStorage.removeItem(key)
:この鍵が格納されている値を削除localStorage.clear()
:ストレージ内のすべての値を削除function setMovieData(movieIndex, moviePrice){
localStorage.setItem('selectedMovieIndex', movieIndex);
localStorage.setItem('selectedMoviePrice', moviePrice);
}
// Update total and count
function updateSelectCount(){
const selectedSeats = document.querySelectorAll('.row .seat.selected');
//spread snytax
const seatsIndex = [...selectedSeats].map(seat => [...seats].indexOf(seat));
localStorage.setItem('selectedSeats',JSON.stringify(seatsIndex));
const selectedSeatsCount = selectedSeats.length;
count.innerText = selectedSeatsCount;
total.innerText = selectedSeatsCount*ticketPrice;
}
2) CSS - perspective
サブエレメントを観察するパース距離の値を設定します.
透視図の数字が大きいほど、遠くから見る感じがします.
3.その他のタスク
個人的にresetボタンを作成しました.RESETボタンを押すと、LocalStorageに格納されているすべての座席と映画情報を初期化できます.function resetSelected(){
localStorage.clear();
seats.forEach(seat =>{
seat.classList.remove('selected');
})
updateSelectCount();
}
reset.addEventListener('click', event => resetSelected());
3. Custom Video Player
ビデオプレーヤーを直接カスタマイズします.
下の再生ボタンをクリックするとPlayとPauseアイコンが変わり、Stopボタンをクリックすると動画が停止し、再生時間が0にリセットされます.
LocalStorageにデータを格納し、リフレッシュしても選択した座席と映画情報を保持します.
1.運転画面
1)メイン画面
2)ビデオ再生時
2.プロジェクトで学んだこと
1) HTML - input range
スライドバーを調整して範囲内の数値を選択できる入力フィールドです.
function checkEmail(input){
const re = /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
if (re.test(input.value)) {
showSuccess(input);
} else {
showError(input, 'Email is not valid')
}
}
function getFieldName(input) {
return input.id.charAt(0).toUpperCase() + input.id.slice(1);
}
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
console.log(animals.slice(2));
// 2번부터 끝까지
// expected output: Array ["camel", "duck", "elephant"]
console.log(animals.slice(2, 4));
// 2번부터 4번까지(4번 미포함)
// expected output: Array ["camel", "duck"]
console.log(animals.slice(1, 5));
// expected output: Array ["bison", "camel", "duck", "elephant"]
console.log(animals.slice(-2));
// expected output: Array ["duck", "elephant"]
console.log(animals.slice(2, -1));
// expected output: Array ["camel", "duck"]
座席を選択すると、映画の価格や選択した座席数によって、次のテキストがリアルタイムで変更されます.
LocalStorageにデータを格納し、リフレッシュしても選択した座席と映画情報を保持します.
1.運転画面
1)メイン画面
2)座席選択時
2.プロジェクトで学んだこと
1) localStorage
localStorageは文字列のみをサポートし、キーと値の形式で値を格納するため、配列を保存する場合は
JSON.stringify()
JSONオブジェクトをStringオブジェクトに変換できます.逆に、localstorageからJSに値をロードする場合、JSON.parse()
関数を使用して文字列オブジェクトをJSONオブジェクトに変換できます.localStorage.setItem(key, value)
:キーとvalueを入力してlocalStorageに保存localStorage.getItem(key)
:この鍵を返す値を格納localStorage.removeItem(key)
:この鍵が格納されている値を削除localStorage.clear()
:ストレージ内のすべての値を削除function setMovieData(movieIndex, moviePrice){
localStorage.setItem('selectedMovieIndex', movieIndex);
localStorage.setItem('selectedMoviePrice', moviePrice);
}
// Update total and count
function updateSelectCount(){
const selectedSeats = document.querySelectorAll('.row .seat.selected');
//spread snytax
const seatsIndex = [...selectedSeats].map(seat => [...seats].indexOf(seat));
localStorage.setItem('selectedSeats',JSON.stringify(seatsIndex));
const selectedSeatsCount = selectedSeats.length;
count.innerText = selectedSeatsCount;
total.innerText = selectedSeatsCount*ticketPrice;
}
2) CSS - perspective
サブエレメントを観察するパース距離の値を設定します.
透視図の数字が大きいほど、遠くから見る感じがします.
3.その他のタスク
個人的にresetボタンを作成しました.RESETボタンを押すと、LocalStorageに格納されているすべての座席と映画情報を初期化できます.
function resetSelected(){
localStorage.clear();
seats.forEach(seat =>{
seat.classList.remove('selected');
})
updateSelectCount();
}
reset.addEventListener('click', event => resetSelected());
3. Custom Video Player
ビデオプレーヤーを直接カスタマイズします.
下の再生ボタンをクリックするとPlayとPauseアイコンが変わり、Stopボタンをクリックすると動画が停止し、再生時間が0にリセットされます.
LocalStorageにデータを格納し、リフレッシュしても選択した座席と映画情報を保持します.
1.運転画面
1)メイン画面
2)ビデオ再生時
2.プロジェクトで学んだこと
1) HTML - input range
スライドバーを調整して範囲内の数値を選択できる入力フィールドです.
max:入力要素の最大値を指定する
min:input要素の最大値を指定する
Step:input要素に入力できる数字の間隔を指定します
value:input要素の初期値を指定する
<input type="range" id="progress" class="progress" min="0" max="100" step="0.1" value="0">
2) Video
Play、pauseなどは見たことのある関数や属性がたくさんあります.
const video = document.querySelector('#video');
function toggleVideoStatus(){
if(video.paused){
video.play();
} else {
video.pause();
}
}
function updateProgress(){
progress.value = (video.currentTime / video.duration) * 100;
//get min
let mins = Math.floor(video.currentTime / 60);
if(mins < 10){
mins = '0' + String(mins);
}
let secs = Math.floor(video.currentTime % 60);
if(secs < 10){
secs = '0' + String(secs);
}
timestamp.innerText = `${mins}:${secs}`;
}
3.その他のタスク
Fast fowardとRewindボタンを作成し、各ボタンを押して、現在のビデオ時間に+5,-5秒です.現在視聴時間が5秒未満の場合は0に設定します.
function forwardVideo(){
video.currentTime += 5
}
function backwardVideo(){
if (video.currentTime < 5){
video.currentTime = 0;
} else{
video.currentTime -=5;
}
}
Reference
この問題について(20 web projects by VanillaJS - 1,2,3), 我々は、より多くの情報をここで見つけました https://velog.io/@jin0106/20-web-projects-by-VanillaJSテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol