やりたい事
最初の一文字を入力するとそれに該当する文字列だけを表示するプログラムを作りたい
エラーコード
main.js:392 Uncaught TypeError: prefectlist.forEach is not a function
at HTMLInputElement.<anonymous>
該当HTMLコード
<!DOCTYPE html> <html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <link rel="shortcut icon" href="img/favicon.ico"> <meta name="description" content="子供から大人まで、プログラミングを学ぶなら 、Codera"> <title>準備を済ませたテンプレート</title> <link rel="stylesheet" href="css/style.css"> <script src="css/main.js" defer></script> </head> <!-- 本文 --> <body> <label>県名の最初の一文字を入力してください<input id="search-word-input" maxlength="1" type="text"></label> <div id="prefect-list"> <button data-name="北海道" data-phonetic="ほっかいどう">北海道</button> <button data-name="青森" data-phonetic="あおもり">青森</button> <button data-name="岩手" data-phonetic="いわて">岩手</button> <button data-name="宮城" data-phonetic="みやぎ">宮城</button> <button data-name="秋田" data-phonetic="あきた">秋田</button> <button data-name="山形" data-phonetic="やまがた">山形</button> </div> </body> </html>
該当javascriptコード
const searchWordText = document.querySelector("#search-word-input"); const prefectlist = document.querySelector("#prefect-list button"); searchWordText.addEventListener('keyup',() => { const searchWord = searchWordText.value; prefectlist.forEach((element) => { if (!searchWord || searchWord === '') { element.classList.remove('hide'); return; } const perfectName = element.dataset.name; const phonetic = element.dataset.phonetic; if ( searchWord.charAt(0) === perfectName.charAt(0) || searchWord.charAt(0) === phonetic.charAt(0) ) { element.classList.remove('hide'); }else{ element.classList.add('hide'); } }); });
親切な方、よろしくお願いします
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。