###前提・実現したいこと
クリックするたびに、関数を実行させたい。
###発生している問題
・リスト項目をクリックすると「削除しますか?」というメッセージが出て、
OKをクリックすると削除するプログラムを作りました。
・1回目のクリックだと実行(削除)されるんですが、2回目のクリックではメッセージも出ません。
###聞きたいこと
・前に画像をクリックするたびに画像が変わるPGMを作り
それを参考に作ったのですが、for文の使い方が変なのでしょうか。
・関数を作ったら、関数名()という風に書かないと実行されないのに
for文はずっと実行されている状態なのでしょうか?(変な聞き方ですみません…)
###JavaScriptのソースコード
・memo_listは配列で、中身は別ページから入れています。
/*=================== メモ取得(配列) =====================*/ var list = JSON.parse(localStorage.getItem('memo_list')); /*=================== トップ画面にリスト出力 =====================*/ var topView = function(){ for(var i = 0; i < list.length; i++){ var li = document.createElement('li'); ///idに配列のインデックス番号をつけておく li.id = "memo" + i; li.textContent = list[i]; document.getElementById('list').appendChild(li); }; }; topView(); /*=================== メモクリックで削除 =====================*/ var thumbs = document.querySelectorAll('li'); for(var i = 0; i < list.length; i++){ thumbs[i].onclick = function(){ var delMemo = window.confirm('削除しますか?'); if(delMemo){ ////id="memoxxx" ←memoの4 10は多めに桁を取っただけ var idNo = (this.id).substring(4,10); ///配列から指定のメモを削除 list.splice(idNo,1); ///ローカルストレージに入れる localStorage.setItem('memo_list',JSON.stringify(list)); ///listを初期化する var element = document.getElementById("list"); while(element.firstChild){ element.removeChild(element.firstChild); } topView(); }else{ return false; }; }; }
###HTMLのソースコード
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>メモ帳</title> <body> <div id="TopPage"> <head><h1>メモ帳</h1></head> <div><ul id="list"></ul></div> </div> <script src="top.js"></script> </body> </head> </html>
###補足情報(言語/FW/ツール等のバージョンなど)
(何故か)chromeだと動きません。firefoxかoperaだと動きます。
回答1件
あなたの回答
tips
プレビュー