<script> let app=new Vue({ el:'#app', data:{ id:0, name:'', books:[ {'id':1,'name':'Vue.js入门','time':new Date()} ], isEditable:true }, mounted(){ this.id=this.books.length+1 console.log(this.id) }, methods:{ onchange(){ if(this.name!=''){ this.isEditable=false } else{ this.isEditable=true } }, add:function (){ for(let i=0;i<this.books.length;i++){ if(this.books[i].name===this.name){ console.log("该书已经存在") return } } this.books.push({'id':this.id,'name':this.name,'time':new Date()}) this.id++ this.name='' console.log(this.books) }, del(id){ let index=this.books.findIndex((item)=>{ if(item.id==id){ return true } }) this.books.splice(index,1) }, updateBookName(id) { let book = this.books.find(item => item.id === id); let newBookName = prompt('请输入新书名', book.name); if (newBookName !== null) { books.name = newBookName; } } } }) </script>在页面中可以修改图书的名字
时间: 2024-02-10 21:15:21 浏览: 82
这段代码看起来有点问题。在 `updateBookName` 方法中,你应该使用 `book.name` 而不是 `books.name` 来更新书名。另外,你需要为每本书创建一个唯一的 id,以便在更新书名时能够正确地找到对应的书。可以将 `id` 作为 `add` 方法的局部变量,每次添加新书时自增。
以下是修改后的代码示例:
```
<script>
let app = new Vue({
el: '#app',
data: {
id: 1, // 初始 id 值为 1
name: '',
books: [
{ 'id': 1, 'name': 'Vue.js入门', 'time': new Date() }
],
isEditable: true
},
methods: {
onchange() {
if (this.name !== '') {
this.isEditable = false
} else {
this.isEditable = true
}
},
add: function () {
for (let i = 0; i < this.books.length; i++) {
if (this.books[i].name === this.name) {
console.log("该书已经存在")
return
}
}
this.books.push({ 'id': this.id, 'name': this.name, 'time': new Date() })
this.id++ // 每次添加新书时自增 id
this.name = ''
console.log(this.books)
},
del(id) {
let index = this.books.findIndex((item) => {
if (item.id == id) {
return true
}
})
this.books.splice(index, 1)
},
updateBookName(id) {
let book = this.books.find(item => item.id === id);
let newBookName = prompt('请输入新书名', book.name);
if (newBookName !== null) {
book.name = newBookName; // 使用 book.name 而不是 books.name
}
}
}
})
</script>
```
现在,在页面中可以修改图书的名字了。点击书名右侧的“编辑”按钮,弹出对话框输入新书名即可。
阅读全文