用智能插件(Fitten Code: Faster and Better AI Assistant)修改好了可以持久保存的vue3留言板

天際

?第一修改是選項式:

<!-- 模板結構 -->
<template><div><textarea  placeholder="請輸入備注內容" v-model="newItem"></textarea><button @click="addItem">添加</button><hr><div class="text"><div v-for="(item, index) in items" :key="index" :class="{ 'finish': item.finish }"><button @click="removeItem(index)">刪除</button><button @click="toggleFinish(index)">{{ item.finish ? '取消' : '完成' }}</button><span class="content">{{ item.name }}</span></div></div></div>
</template>
<!-- 腳本行為 -->
<script>
export default {data() {return {newItem: '',items: []};},mounted() {this.loadTodo();},methods: {addItem() {this.items.push({ name: this.newItem, finish: false });this.saveTodo();this.newItem = '';},removeItem(index) {this.items.splice(index, 1);this.saveTodo();},toggleFinish(index) {this.items[index].finish = !this.items[index].finish;this.saveTodo();},saveTodo() {localStorage.setItem('mylogs', JSON.stringify(this.items));},loadTodo() {const savedItems = JSON.parse(localStorage.getItem('mylogs'));if (savedItems) {this.items = savedItems;}}}
};
</script>
<!-- 組件樣式 -->
<style>
.finish {text-decoration: line-through;text-shadow: 2px 2px 2px LightslateGray;box-shadow: 0 0 10px 5px rgba(255, 255, 255, 0.916);
}
</style>

第2次修改

<template><div><textarea      placeholder="請輸入備注內容"v-model="newItem"></textarea><button @click="addItem">添加</button><hr /><div class="text"><divv-for="(item, index) in items":key="index":class="{ finish: item.finish }"><button @click="removeItem(index)">刪除</button><button @click="toggleFinish(index)">{{ item.finish ? "取消" : "完成" }}</button><span class="content">{{ index + 1 }}.{{ item.name }}{{ item.finish ? "(已完成)" : "" }}</span></div></div></div>
</template><script >import { ref, onMounted } from "vue";export default {setup() {const newItem = ref("");const items = ref([]);const addItem = () => {items.value.push({ name: newItem.value, finish: false });saveTodo();newItem.value = "";};const removeItem = (index) => {items.value.splice(index, 1);saveTodo();};const toggleFinish = (index) => {items.value[index].finish = !items.value[index].finish;saveTodo();};const saveTodo = () => {localStorage.setItem("mylogs", JSON.stringify(items.value));};const loadTodo = () => {const savedItems = JSON.parse(localStorage.getItem("mylogs"));if (savedItems) {items.value = savedItems;}};onMounted(() => {loadTodo();});return {newItem,items,addItem,removeItem,toggleFinish,saveTodo,loadTodo};}};
</script><style scoped>.finish {text-decoration: line-through;text-shadow: 2px 2px 2px LightslateGray;box-shadow: 0 0 10px 5px rgba(255, 255, 255, 0.916);}
</style>

?第3次修改

<template><div class="view"><!-- 左側按鈕 --><div class="view_left"><button class="btn_checkbox">操作<input type="checkbox" v-model="showInput" value="操作" /></button><button class="del_checkbox">刪除 <input type="checkbox" v-model="showInput2" value="刪除" /></button></div><!-- 中間內容 --><div class="view_content"><!--  --><div class="textarea_div"><textareaclass="text-input-box"placeholder="請輸入備注內容"v-model="newItem"v-if="showInput"></textarea><button @click="addItem" v-if="showInput">添加</button></div><!--  --><div class="div_list"><div class="text"><div v-for="(item, index) in items" :key="index" :class="{ finish: item.finish }"><button @click="removeItem(index)" v-if="showInput2">刪除</button><button @click="toggleFinish(index)">{{ item.finish ? '取消' : '完成' }}</button><button v-if="showInput" @click="edit(index)">編輯</button><span class="content"><button class="numb">{{ index + 1 }}</button> {{ item.name }}{{ item.finish ? '(已完成)' : '' }}</span><span v-show="oindex == index ? true : false" class="textarea_div"><textarea v-model="newItem"></textarea><button @click="csu">提交</button></span></div></div></div></div><!-- 右側按鈕 --><div class="view_right"></div></div>
</template><script setup>
// import '@/assets/styles/view.scss'
// import '@/assets/styles/jottings_memo.scss'
// import '../../assets/styles/input_checkbox.scss'
import { ref, onMounted } from 'vue'
const showInput = ref(false)
const showInput2 = ref(false)
const newItem = ref('')
const items = ref([])
const oindex = ref(-1)const addItem = () => {items.value.push({ name: newItem.value, finish: false })saveTodo()newItem.value = ''
}
const removeItem = (index) => {items.value.splice(index, 1)saveTodo()
}
const edit = (index) => {if (newItem.value === '' || false) {newItem.value = items.value[index].nameoindex.value = index} else {newItem.value = ''oindex.value = -1}
}
const csu = () => {if (oindex.value === -1) {return}items.value[oindex.value].name = newItem.valueoindex.value = -1newItem.value = ''saveTodo()
}const toggleFinish = (index) => {items.value[index].finish = !items.value[index].finishsaveTodo()
}const saveTodo = () => {try {localStorage.setItem('jottings', JSON.stringify(items.value))} catch (error) {console.error('Failed to save todo items to localStorage:', error)// 可以添加適當的錯誤處理邏輯,比如向用戶顯示錯誤信息}
}const loadTodo = () => {try {const savedItems = JSON.parse(localStorage.getItem('jottings'))if (savedItems) {items.value = savedItems}} catch (error) {console.error('Failed to load todo items from localStorage:', error)// 可以添加適當的錯誤處理邏輯,比如向用戶顯示錯誤信息}
}onMounted(() => {loadTodo()
})
</script><style scoped>
.btn_checkbox,
.del_checkbox {box-shadow:inset -2px -2px 3px rgba(255, 255, 255, 0.589),inset 2px 2px 3px rgba(0, 0, 0, 0.6);border-radius: 50px;font-size: 20px;margin: 0px 0 0 0px;width: 40px;transform: translate(20px, 0px);input[type='checkbox'] {top: 3px;left: -4px;}
}
.del_checkbox {color: #ff0000;background-color: #f56c6c;margin-left: 10px;
}
button {background-color: #67c23a;color: #e6a23c;border-radius: 3px;border: 2px solid#ccc;
}
.div_list {overflow-x: auto;overflow-y: auto;display: flex;flex-wrap: wrap;border-radius: 10px;width: 84vw;height: 90vh;padding: 20px;border: 2px solid #ccc;.content {word-wrap: break-word;user-select: text;color: #8ac5ff93;font-size: 20px;&:hover {color: hsla(160, 100%, 37%, 1);text-shadow: 1px 1px 1px #000000;box-shadow: 0 0 10px 5px rgba(255, 255, 255, 0.916);border-radius: 50px;background-color: rgb(191, 210, 255);}}
}
.textarea_div {display: flex;textarea {background-color: #144756;color: #fff;font-size: 20px;height: 21px;}
}
.view_content .textarea_div {position: absolute;
}
.text {display: flex;flex-wrap: wrap;align-content: flex-start;gap: 20px;
}
.finish {text-decoration: line-through;box-shadow: 0 0 10px 5px rgba(255, 255, 255, 0.916);background-color: rgb(191, 210, 255);border-radius: 50px;text-shadow: 1px 1px 1px #030303;box-shadow:inset -2px -2px 3px rgba(255, 255, 255, 0.6),inset 2px 2px 3px rgba(0, 0, 0, 0.6);
}
.numb {border-radius: 50px;color: hsla(160, 100%, 37%, 1);text-shadow: 1px 1px 1px #000000;
}</style>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14364.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14364.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14364.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue2+Element 封裝評論+表情功能

有需要的小伙伴直接拿代碼即可&#xff0c;不需要下載依賴&#xff0c;目前是初始版本&#xff0c;后期會進行代碼的優化。 評論組件如下&#xff1a; 創建 comment.vue 文件。 表情組件 VueEmoji.vue 在評論組件中使用。 <template><div class"comment"…

《主對角線求和》

描述 有一個n行n列的二維數組&#xff0c;請你求出二維數組的主對角線上的所有數字的和是多少。 輸入描述 第一行一個整數n&#xff0c;代表下面輸入的是n行n列(2≤n≤10)的二維數組&#xff1b; 接下來n行&#xff0c;每行n列&#xff0c;表示二維數組的每個元素各是多少。 …

數字孿生技術在管理中有哪些實際應用?

隨著科學技術的不斷提高&#xff0c;數字孿生技術也在不斷的從理論應用至現實&#xff0c;并且涉及領域較為廣泛。 在生產運營管理層面&#xff0c;通過構建數字孿生模型&#xff0c;企業可以精準模擬和優化生產線&#xff0c;實現生產流程的智能化和高效化。比如&#xff0c;…

TypeScript-搭建編譯環境

搭建編譯環境 TypeScript 編寫的代碼是無法直接在js引擎( 瀏覽器 / Nodejs )中運行的&#xff0c;最終還需要經過編譯成js代碼才可以正常運行 搭建手動編譯環境 1?? 全局安裝 typescript 包&#xff08;編譯引擎&#xff09; -> 注冊 tsc 命令 npm i -g typescript 2…

下拉框操作/鍵鼠操作/文件上傳

在我們做UI自動化測試的時候&#xff0c;會有一些元素需要特殊操作&#xff0c;比如下拉框操作/鍵鼠操作/文件上傳。 下拉框操作 在我們很多頁面里有下拉框的選擇&#xff0c;這種元素怎么定位呢&#xff1f;下拉框分為兩種類型&#xff1a;我們分別針對這兩種元素進行定位和…

2024最新 Jenkins + Docker 實戰教程(五)- 配置Gitee Webhooks實現自動構建部署

&#x1f604; 19年之后由于某些原因斷更了三年&#xff0c;23年重新揚帆起航&#xff0c;推出更多優質博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有堅忍不拔之志 &#x1f390; 個人CSND主頁——Mi…

Packet Tracer-HSRP+DHCPv4+VLAN間路由+以太通道綜合實驗

實驗拓撲&#xff1a; 實驗內容&#xff1a; VLAN及VLAN間路由的配置&#xff0c;以太通道的配置&#xff0c;STP的根調整&#xff0c;DHCPv4的配置&#xff0c;首跳冗余HSRP的配置。 實驗最終結果&#xff1a; PC可以自動獲取到DHCP-Server分配的IP地址&#xff0c;實現首跳…

【Sentinel】Sentinel配置zk持久化

代碼 import cn.hutool.core.util.StrUtil; import com.alibaba.csp.sentinel.datasource.ReadableDataSource; import com.alibaba.csp.sentinel.datasource.zookeeper.ZookeeperDataSource; import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule; import com.a…

信息系統工程師--八大績效域-交付績效域

信息系統工程師的八大績效域包括&#xff1a;干系人、團隊、開發方法和生命周期、項目工作、規劃、交付、度量、不確定性。 預期目標 1、項目有助于實現業務目標和戰略 2、項目實現了預期成果 3、在預定時間內實現了項目收益 4、項目團隊對需求有清晰的理解 5、干系人接受…

GitLab的原理及應用詳解(五)

本系列文章簡介: 隨著軟件開發的不斷進步和發展,版本控制系統成為了現代軟件開發過程中不可或缺的一部分。而GitLab作為其中一種流行的版本控制工具,在軟件開發領域享有廣泛的應用。GitLab不僅提供了強大的版本控制功能,還集成了項目管理、持續集成和部署、代碼審查等多個功…

web學習筆記(五十七)

目錄 1. 面試題總結 1.1 public和assets區別 1.2 vite的作用 1.3 vue單頁面應用 1.4 組件分為兩種類型&#xff1a; 1.5 App.vue文件 1.6 main.js 1.7 vue2中為什么不能直接監聽到數組的改變&#xff1f; 2. .vue頁面的組成 3. ref 響應式數據 1. 面試題總結 1.1…

Web3革命:探索科技與物聯網的無限可能

引言 Web3時代正在悄然而至&#xff0c;帶來了對互聯網的徹底顛覆和改變。作為互聯網的下一代&#xff0c;Web3不僅是技術革新的延續&#xff0c;更是對傳統互聯網模式的重新構想。在這個新時代&#xff0c;科技與物聯網的結合將迎來無限的可能性&#xff0c;將探索到一片全新…

iOS系統故障怎么辦?這三種蘋果手機系統修復方法你一定要知道

隨著蘋果手機使用時間越長&#xff0c;蘋果手機有時也會出現系統問題&#xff0c;如卡頓、崩潰、無法啟動等。這些問題不僅影響用戶的使用體驗&#xff0c;還可能導致數據丟失。因此&#xff0c;掌握蘋果手機系統修復方法顯得尤為重要。本文將詳細介紹蘋果手機系統修復的常見方…

Leetcode 3153. Sum of Digit Differences of All Pairs

Leetcode 3153. Sum of Digit Differences of All Pairs 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3153. Sum of Digit Differences of All Pairs 1. 解題思路 這一題的話只需要統計一下每一個位上0-9各自出現了多少次即可。 然后&#xff0c;對于每一位&#xff0c;答…

數倉領域,Serving 是什么概念?

在數據倉庫&#xff08;Data Warehouse&#xff09;和更廣泛的數據工程領域中&#xff0c;“Serving”通常指的是將處理和優化后的數據提供給最終用戶或應用程序的過程。這包括數據的查詢、檢索、展示等操作&#xff0c;使得數據能夠在決策支持、報告、分析、或機器學習等應用中…

大模型之Ollama:在本地機器上釋放大型語言模型的強大功能

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

實戰Java虛擬機-實戰篇

一、內存調優 1.內存溢出和內存泄漏 內存泄漏&#xff08;memory leak&#xff09;&#xff1a;在Java中如果不再使用一個對象&#xff0c;但是該對象依然在GC ROOT的引用鏈上&#xff0c;這個對象就不會被垃圾回收器回收&#xff0c;這種情況就稱之為內存泄漏。內存泄漏絕大…

一番賞小程序開發,為玩家帶來線上抽賞魅力

隨著人們對娛樂消費的增加&#xff0c;以及二次元文化的快速發展&#xff0c;以動漫IP為主的一番賞受到了越來越多的年輕人關注&#xff0c;一番賞市場迎來了黃金發展期&#xff01; 一番賞的運營模式是以“限量”為主&#xff0c;不管什么商品數量都是有限的&#xff0c;因此…

微軟剛發布的Copilot+PC為什么讓Intel和AMD尷尬?2024 AI PC元年——產業布局及前景展望

美國東部時間5月20日在微軟位于華盛頓的新園區舉行的發布會上&#xff0c;宣布將旗下AI助手Copilot全面融入Windows系統&#xff0c;能夠在不調用云數據中心的情況下處理更多人工智能任務。 “將世界作為一個提示詞就從Windows系統開始”。微軟的新PC將是“CopilotPC”&#xf…

[Algorithm][回溯][記憶化搜索][最長遞增子序列][猜數字大小Ⅱ][矩陣中的最長遞增路徑]詳細講解

目錄 1.最長遞增子序列1.題目鏈接2.算法原理詳解3.代碼實現 2.猜數字大小 II1.題目鏈接2.算法原理詳解3.代碼實現 3.矩陣中的最長遞增路徑1.題目鏈接2.算法原理詳解3.代碼實現 1.最長遞增子序列 1.題目鏈接 最長遞增子序列 2.算法原理詳解 題目解析&#xff1a;從每個位置&am…