From 0181dc41316619ae82512470d9536cc0a106420f Mon Sep 17 00:00:00 2001 From: xiongjiaming <3190186054@qq.com> Date: Sun, 26 May 2024 20:41:16 +0800 Subject: [PATCH] Fix bug 540 --- app/templates/userpage_get.html | 94 +++++++++++++++++++++++++-------- 1 file changed, 73 insertions(+), 21 deletions(-) diff --git a/app/templates/userpage_get.html b/app/templates/userpage_get.html index b0cfd27..7898e73 100644 --- a/app/templates/userpage_get.html +++ b/app/templates/userpage_get.html @@ -293,30 +293,82 @@ } } function saveArticle() { - const articleTitle = document.getElementById('article_title').innerText; // 获取文章标题 - const article = document.getElementById('article').innerText; // 获取文章内容 - const savedArticlesDropdown = document.getElementById('saved_articles_dropdown'); // 获取下拉菜单 - var option = document.createElement('option'); // 创建一个新的下拉菜单选项 - option.text = articleTitle; // 将文章标题作为选项文本 - option.value = article; // 将文章内容作为选项值 - option.title = article; // 将文章内容作为工具提示内容 - savedArticlesDropdown.appendChild(option); // 将选项添加到下拉菜单中 - localStorage.setItem(articleTitle, article) //将标记文章存储到localstorage中 - alert("文章已标记") -} - window.onload = function() { + const article = { + user_level: document.getElementById('user_level').innerText, + text_level: document.getElementById('text_level').innerText, + date: document.getElementById('date').innerText.replace('Article added on: ', ''), + article_title: document.getElementById('article_title').innerText, + article_body: document.getElementById('article').innerText, + source: document.getElementById('source').innerText, + question: document.getElementById('question').innerText, + answer: document.getElementById('answer').innerText + }; + + const articleJSON = JSON.stringify(article); + const articleTitle = article.article_title; const savedArticlesDropdown = document.getElementById('saved_articles_dropdown'); - for (let i = 0; i < localStorage.length; i++) { - const key = localStorage.key(i); // 获取localStorage中的键 - const value = localStorage.getItem(key); // 获取localStorage中的值 - // 创建一个新的下拉菜单选项 - var option = document.createElement('option'); - option.text = key; // 将文章标题作为选项文本 - option.value = value; // 将文章内容作为选项值 - option.title = value; // 将文章内容作为工具提示内容 - savedArticlesDropdown.appendChild(option); // 将选项添加到下拉菜单中 + + var option = document.createElement('option'); + option.text = articleTitle; + option.value = articleJSON; // 存储序列化的JSON字符串 + option.title = article.article_title; + savedArticlesDropdown.appendChild(option); + localStorage.setItem(articleTitle, articleJSON); // 以文章标题为键,序列化的JSON字符串为值存储 + alert("文章已标记"); +} + function loadSelectedArticle() { + const selectedOption = document.getElementById('saved_articles_dropdown'); + const selectedTitle = selectedOption.options[selectedOption.selectedIndex].text; + const articleJSON = localStorage.getItem(selectedTitle); + + if (articleJSON) { + const today_article = JSON.parse(articleJSON); // 解析JSON字符串为对象 + update(today_article); // 使用解析出的对象更新页面 } } + + window.onload = function() { + const savedArticlesDropdown = document.getElementById('saved_articles_dropdown'); + savedArticlesDropdown.addEventListener('change', loadSelectedArticle); + + // 先清空dropdown,以防有多余的选项或重新加载页面时出现重复 + savedArticlesDropdown.innerHTML = ''; + + // 获取localStorage中最后一个(最新)的键值对 + let latestKey, latestValue; + for (let i = 0; i < localStorage.length; i++) { + const key = localStorage.key(i); + const value = localStorage.getItem(key); + if (!latestKey) { // 第一次迭代时设置最新文章 + latestKey = key; + latestValue = value; + } + } + + // 首先添加最新保存的文章到下拉菜单 + if (latestKey && latestValue) { + var latestOption = document.createElement('option'); + latestOption.text = latestKey; + latestOption.value = latestValue; + latestOption.title = latestValue; + savedArticlesDropdown.appendChild(latestOption); + } + + // 接着遍历其余文章并添加到下拉菜单 + for (let i = 0; i < localStorage.length; i++) { + const key = localStorage.key(i); + const value = localStorage.getItem(key); + // 确保不重复添加最新文章 + if (key !== latestKey) { + var option = document.createElement('option'); + option.text = key; + option.value = value; + option.title = value; + savedArticlesDropdown.appendChild(option); + } + } + savedArticlesDropdown.selectedIndex = -1; +}