syannu
4/26/2017 - 2:57 AM

session Storageでボタンの状態を保持

function setSessionStorage() {
	var time = new Date().getTime();

	var storage = sessionStorage;
	var appendBtn = $('.mod_btn_append');
	var revertBtn = $('.mod_btn_revert');
	var moreBtn = $('.mod_btn_more');

	appendBtn.live('click', function() {
		// 展開ボタンクリック時にidを取得してstorageへ
		var appendBtnFlag = $(this).attr('id');
		var expire = new Date().getTime();
		storage.setItem(appendBtnFlag, 'append' + expire);
		//storage.setItem(appendBtnFlag + 'AppendTime', expire);
	});

	revertBtn.live('click', function() {
		// 収納ボタンクリック時にstorageを空に
		var appendBtnFlag = $(this).attr('id');
		storage.removeItem(appendBtnFlag);
	});

	// storageの中身を全て取得
	for (i = 0; i < storage.length; i++) {
		var key = storage.key(i);
		var data = storage.getItem(key);
		var dataTime = data.replace('append', '');

		// valueにappendが入っている(展開されている)場合に展開時のステータスへ
		if (time - dataTime > 10 * 60 * 1000) {
			// 展開から時間指定(10分)でstorageを破棄
			storage.removeItem(key);
		} else if (data = 'append') {
			// ボタンの親要素のidから各ボタンを特定
			var appendBtn = $('.mod_btn_append', '#section_' + key);
			var moreBtn = $('.mod_btn_more', '#section_' + key);

			appendBtn.removeClass('mod_btn_append').addClass('mod_btn_revert');
			appendBtn.text('元にもどす');
			moreBtn.show();
			$('.newslist', '#section_' + key).addClass('append');
		}
	}
}