#やりたいこと
JavaScriptを勉強中です。
本の内容を応用して、同じ内容の処理をfunctionで定義して呼び出したいのですが、
ブラウザのコンソールに(index):117 Uncaught ReferenceError: idName is not defined
と
出てしまいます。
原因が分からないため、教えていただければ幸いです。
テーマは非同期通信です。
#ソース
json
1[ 2 {"id":"js", "crowded":"yes"}, 3 {"id":"security", "crowded":"no"}, 4 {"id":"aiux", "crowded":"middle"} 5] 6
html
1 <section> 2 <ul class = 'list'> 3 <li class = 'seminar' id = 'js'> 4 <h2>JavaScript勉強会</h2> 5 <p class = 'check'>空き席状況を確認</p> 6 </li> 7 <li class = 'seminar' id = 'security'> 8 <h2>セキュリティ対策講座</h2> 9 <p class = 'check'>空き席状況の確認</p> 10 </li> 11 <li class = 'seminar' id = 'aiux'> 12 <h2>AIを利用したUX設計</h2> 13 <p class = 'check'>空き席状況を確認</p> 14 </li> 15 </ul> 16 </section>
css
1//装飾用ーーーーーーーーーーーーーーーーーーーーーー 2 .list{ 3 overflow: hidden; 4 margin: 0; 5 padding: 0; 6 list-style-type: none; 7 } 8 .list h2{ 9 margin: 0 0 2em 0; 10 font-size: 16px; 11 text-align: center; 12 } 13 .seminar{ 14 float: left; 15 margin: 10px 10px 10px 0; 16 border: 1px solid #23628f; 17 padding: 4px; 18 width: 25%; 19 } 20 .check{ 21 margin: 0; 22 padding: 8px; 23 font-size: 12px; 24 color: #ffffff; 25 background-color: #23628f; 26 text-align: center; 27 cursor: pointer; 28 } 29 30//下記をプログラムで使用するーーーーーーーーーーーーーーーーーーーーーーーーーーー 31 .red{ 32 background-color: #e33a6d; 33 } 34 .green{ 35 background-color: #7bc52e; 36 } 37 .yellow{ 38 background-color: yellow; 39 }
js
1 'use strict'; 2 3 $(document).ready(function(){ 4 //ファイルの読み込み 5 $.ajax({url: 'data.json', dataType: 'json'}) 6 .done(function(data){ 7 data.forEach(function(item, index){ 8 if(item.crowded === 'yes'){ 9 // const idName = '#' + item.id; <- 応用前 10 createIdName(item); //<- 応用後 11 $(idName).find('.check').addClass('crowded'); 12 }else if(item.crowded === 'middle'){ 13 // const idName = '#' + item.id; <- 応用前 14 createIdName(item);//<- 応用後 15 $(idName).find('.check').addClass('middle'); 16 } 17 }); 18 }) 19 .fail(function(){ 20 window.alert('読み込みエラー'); 21 }); 22 }); 23 24 //クリックされたら空き席状況を確認 25 $('.check').on('click', function(){ 26 if($(this).hasClass('crowded')){ 27 $(this).text('残席わずか').addClass('red'); 28 }else if($(this).hasClass('middle')){ 29 $(this).text('微妙!').addClass('yellow'); 30 }else{ 31 $(this).text('お席あります').addClass('green'); 32 } 33 }); 34 35 //応用のため関数を定義 36 function createIdName(item){ 37 const idName = '#' + item.id; 38 };
定義した関数、createIdNameを使わずに、応用前の状態にするとエラーが出ずに正しく動作します。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/03 15:25
2019/11/03 15:26