访问器属性特性中的get和set方法来实现
一、需要实现的效果是:
当在 input 框输入内容时,input 框下方的div标签能实时显示输入的内容。此时在浏览器的控制台获取到的obj.inputText的值就是页面div标签的值。
结论:页面变,js数据发生改变
2、当在浏览器的控制台修改obj.inputText的值时,页面的div标签会显示成修改后的值。
结论:js数据变js监听input值变化,页面发生改变
二、用到的技术:主要通过ES5中的Object.defineProperty()实现,利用它的访问器属性特性中的get和set方法来实现。
三、主要步骤:
1、定义一个对象
2、利用Object.defineProperty为对象定义一个属性
3、监听输入框的oninput事件,把用户输入的值赋值给obj对象的inputText属性,调用set方法
4、inputText的属性值被修改就会触发set函数,然后在set函数中把用户在输入框输入的值赋值给div标签js监听input值变化,就可以实现数据双向绑定了
四、实现代码如下:
<pre class="kdocs-xml">`
Document
let input = document.getElementsByTagName('input')[0];
let box = document.querySelector('#box');
// 定义一个对象
let obj = {};
// 利用Object.defineProperty为obj对象定义一个inputText属性
Object.defineProperty(obj, 'inputText', {
get() {
return box.innerHTML;
},
set(value) {
// inputText的属性值被修改就会触发set函数,然后在set函数中把用户在输入框输入的值赋值给div标签,就可以实现数据双向绑定了
box.innerHTML = value;
}
})
// 监听输入框的oninput事件
input.addEventListener('input', e => {
// 把用户输入的值赋值给obj对象的inputText属性,调用set方法
obj.inputText = e.target.value;
});
文章由官网发布,如若转载,请注明出处:https://www.veimoz.com/1563
0 评论
927
发表评论
热门文章
自媒体博客Spimes主题38w 阅读
Spimes主题专为博客、自媒体、资讯类的网站设计....
vCard主题个人简历主题13w 阅读
一款个人简历主题,可以简单搭建一下,具体也比较简单....
Splity博客双栏主题13w 阅读
仿制主题,Typecho博客主题,昼夜双版设计,可....
Spzac个人资讯下载类主题12w 阅读
用于作品展示、资源下载,行业垂直性网站、个人博客,....
热评文章
自媒体博客Spimes主题420 评论
Splity博客双栏主题191 评论
Spzac个人资讯下载类主题89 评论
Splinx博客图片主题35 评论
Spzhi知识付费社区主题34 评论
三栏清新博客S_blog主题30 评论
vCard主题个人简历主题29 评论
Pure轻简主题28 评论
ybqsy
4天前
解决了,post文件最后
删除就可以了