Webの勉強はじめてみた その11 ~JavaScriptで診断ゲーム編2~
N予備校の「プログラミング入門 Webアプリ」を受講しています。
今回は第1章17節「診断機能の組み込み」と18節「ツイート機能の開発」です。
機能追加
//診断ボタン押下時の処理
assessmentButton.onclick = () => {
//ユーザー名取得
const userName = userNameInput.value;
if(userName.length === 0){
//空欄なら処理を終了
return;
}
//診断結果取得
const assessmentResult = assessment(userName);
//診断結果の表示
createAssessment(resultDivided, assessmentResult);
//ツイートボタンの表示
createAssessment(tweetDivided, assessmentResult);
}
//Enter押下でも処理を実行する
userNameInput.onkeydown = event =>{
if(event.key === 'Enter'){
assessmentButton.onclick();
}
}
/**
* 指定した要素の子要素を全て削除する
* @param {string} element HTMLの要素
*/
function removeAllChildren(element){
//既に診断結果がある場合
while(element.firstChild){
//子要素がある限り削除
element.removeChild(element.firstChild);
}
}
/**
* 診断結果を表示するためのタグを追加する処理
* @param {HTML Element} HTML要素
* @param {String} 診断結果
*/
function createAssessment(element, result){
//子要素の削除処理
removeAllChildren(element);
//診断結果表示
if(element === resultDivided){
//タイトル
const header = document.createElement('h3');
header.innerText = '診断結果';
//結果表示エリアに追加
element.appendChild(header);
//診断結果 作成
const paragraph = document.createElement('p');
paragraph.innerText = result;
//結果表示エリアに追加
element.appendChild(paragraph);
}else{
//アンカータグ
const anchor = document.createElement('a');
//href の内容
//URIエンコード
const uriJp = encodeURI('あなたのいいところ');
const hrefValue ='https://twitter.com/intent/tweet?button_hashtag='+ uriJp +'&ref_src=twsrc%5Etfw';
//アンカータグ 各種設定
anchor.setAttribute('href', hrefValue);
anchor.className ='twitter-hashtag-button'
//anchor.setAttribute('class', 'twitter-hashtag-button');
anchor.setAttribute('data-text', result);
anchor.innerText = 'Tweet #あなたのいいところ';
//アンカータグの追加
element.appendChild(anchor);
//scriptタグ作成
const script = document.createElement('script');
//src の設定
const src = 'https://platform.twitter.com/widgets.js';
script.setAttribute('src', src);
//Scriptタグの追加
element.appendChild(script);
}
}
共通部分はできるだけまとめたかったけど、あんまり綺麗にできなかった気がする。
覚えておきたいこと
1. アロー関数 2. ガード句 3. URIエンコード 4. onkeydownイベント
アロー関数
今まで見かけたことのある記述の謎が解けた。
assessmentButton.onclick = () => {}
assessmentButton.onclick = function(){}
同じことらしい。
function
あったほうが個人的にはわかりやすいけれど。
ガード句
if(userName.length === 0){
//空欄なら処理を終了
return;
}
URIエンコード
URIのクエリに半角英数字以外が入ると文字化けが起きたりする。
encodeURIComponent 関数で 文字列を URI エンコードされたものへ変換 decodeURIComponent 関数で URI エンコードされた文字列から元のものへ復元
onkeydown
//Enter押下でも処理を実行する
userNameInput.onkeydown = event =>{
if(event.key === 'Enter'){
assessmentButton.onclick();
}
}
userNameInput.onkeydown = function(event){
}
ここにもアロー関数が。
次回に向けて
第一章の講義は次回で終わりみたいです。
といってもGitHubの登録とか使い方みたいな感じなので、記事にするかどうかはわかりません。
練習問題やりつつ、次章へって感じでしょうか。
Author And Source
この問題について(Webの勉強はじめてみた その11 ~JavaScriptで診断ゲーム編2~), 我々は、より多くの情報をここで見つけました https://qiita.com/mybrother_jake/items/1aeeef360f7569fb939a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .