type="module" に関して
とりあえず、index.htmlを作ります
今回はスクリプトタグにjavascript全部書くのではなく、type="module"で別ファイルから読み込むところに挑戦してみました。
モジュールでの書き方
クレーマー
クレーマーの名前
クレーマーの服装
.jsファイル間(スクリプト間)での変数やり取り
サンプルコードのように importとexportで変数やりとりできます
呼び出す.jsファイル
claimer.jsというファイルを作り、以下をコピペします。
1 2 3 4 5 |
import { miyoji } from "./user.js"; const name = "うんちマン"; document.getElementById("claimer").textContent = name; document.getElementById("claimermiyoji").textContent = miyoji; |
user.jsというファイルを作り、以下をコピペします。
1 2 3 |
export const miyoji = "ミスター"; const name = "お洒落さん"; document.getElementById("user").textContent = name; |
実行すると
コンソールで実行すると、JSONの内容が見れるかと思います
応用編 Jsonデータをクリックするごとに増やしていく
同じく、index.htmlを以下のコードコピペ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<!DOCTYPE html> <html lang="jp"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>addNameBtn</title> </head> <body> <ol id = "lists"> <!– ol の要素で1.2.3...と自動で入力される-> <li>ハマーン</li> <li>マウアー</li> <li>ナナイ</li> </ol> <button id = "addBtn">名前を増やす</button> <script src = "index.js"></script> </body> </html> |
index.jsも以下の内容をコピペで作る
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
// const button = document.getElementById("addBtn"); // const namelists = document.getElementById("lists"); // button.addEventListener("click", async function(){ // //この辺はデータのやり取り // const res = await fetch("https://jsonplaceholder.typicode.com/users"); // const users = await res.json(); /*実際のユーザーのJSONデータを users にいれる*/ // console.log(users); // //リストに追加する処理 DOM操作 // users.forEach(function(user){ //for分で繰り返し // const list = document.createElement("li"); //HTML要素を作成できるメソッド(今回はli要素を作成。divとかも作れる) // list.innerText =user.name+"\n"+user.email+"\n"+user.address.zipcode; //userの名前とメルアド ”\n"はただ改行入れただけ // namelists.appendChild(list); //listのテキストをhtmlのliに追加する処理 // console.log(user.email); // }); // // //forで書換えたとき リストに追加する処理 DOM操作 // // for (let index = 0; index < users.length; index++) { // // const user = users[index]; // // const list = document.createElement("li"); //HTML要素を作成できるメソッド(今回はli要素を作成。divとかも作れる) // // list.innerText =user.name+"\n"+user.email+"\n"+user.address.zipcode; //userの名前とメルアド ”\n"はただ改行入れただけ // // namelists.appendChild(list); //listのテキストをhtmlのliに追加する処理 // // console.log(user.email); // // } // }); // //windowを読み込んだときに、listを取得する // window.addEventListener("load", async function(){ // //この辺はデータのやり取り // const res = await fetch("https://jsonplaceholder.typicode.com/users"); // const users = await res.json(); /*実際のユーザーのJSONデータを users にいれる*/ // console.log(users); // //リストに追加する処理 DOM操作 // users.forEach(function(user){ //for分で繰り返し // const list = document.createElement("li"); //HTML要素を作成できるメソッド(今回はli要素を作成。divとかも作れる) // list.innerText =user.name+"\n"+user.email+"\n"+user.address.zipcode; //userの名前とメルアド ”\n"はただ改行入れただけ // namelists.appendChild(list); //listのテキストをhtmlのliに追加する処理 // console.log(user.email); // }); // }); //リファクタリング const button = document.getElementById("addBtn"); const namelists = document.getElementById("lists"); //メソッド function addList(user){ //for分で繰り返し const list = document.createElement("li"); //HTML要素を作成できるメソッド(今回はli要素を作成。divとかも作れる) list.innerText =user.name+"\n"+user.email+"\n"+user.address.zipcode; //userの名前とメルアド ”\n"はただ改行入れただけ namelists.appendChild(list); //listのテキストをhtmlのliに追加する処理 console.log(user.email); } //メソッド async function getUsers(){ //この辺はデータのやり取り const res = await fetch("https://jsonplaceholder.typicode.com/users"); const users = await res.json(); /*実際のユーザーのJSONデータを users にいれる*/ return users; console.log(users); } async function listUsers(){ const users = await getUsers(); users.forEach(addList); //リストに追加する処理 DOM操作 } //イベント window.addEventListener("load",listUsers); button.addEventListener("click",listUsers); |
実行すると以下のようになります
See the Pen ボタン押すと名前が無限増殖スクリプト by cattleya crispa (@hamankarn) on CodePen.
ここまでのコードを覚えたら、DOM操作でJSON API使えるかなと