js 数据双向绑定

数据绑定:

  1. 在页面中,绑定两个或多个元素之间的值,例如将input的值绑定到h1上,改变input输入框的值,h1标签的文字也自动更新。
    思路:
    a. 添加Input和h1标签
    b. 给input标签添加oninput()监听事件,当改变input的输入值时,h1的值也跟着改变。

html:

<h1 id="title"></h1>
<input type="text" id="text" >

js:

var title = document.getElementById('title');
var text = document.getElementById('text');
    text.oninput = function () {
        title.innerHTML = text.value;
 }

结果:


1.png
  1. 在代码中更改值的最常见方法是赋值。
    js:
text.value = 'zhang';
title.innerHTML = text.value;

即是通过手动赋值来实现值的更改。

封装一下代码,实现更新input的值,h1的值也跟着改变。用Object.defineProperty(obj, prop, descriptor)。

obj:被定义或修改属性的对象;
prop:要定义或修改的属性名称;
descriptor :对属性的描述.

js:

Object.defineProperty(text,'val',{
     get: function () {
          return this.value;
      },
      set: function (str) {
           this.value = str;
           title.innerHTML = str;
       }
    });
    text.val = 'zhangzhangzhang';

即:为input添加一个val 属性,val的值与input.value是关联的(‘this.value = str’),同时在val属性的setter中添加了更新h1内容的代码('title.innerHTML = str'),这样就通过设置input的val的属性值来同时更新input.value和h1的文本了。如图:


2.png

传送门:
https://www.cnblogs.com/lovebread/p/7875203.html
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 「声动派」,专注互联网价值传播,为你分享大连接时代的一切! 本文大约11000字阅读需要12分钟 第一部分 写在前...
    声动派阅读 645评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,086评论 0 29
  • 刘索拉在她的书里推荐音乐,FADO(法朵)是其中之一,我爱屋及乌地把她推荐的所有音乐搜罗到博客的播放器里。开始听时...
    多瑞的视线阅读 252评论 2 1
  • D83,2018年5月26日 星期六 晴 今天下午,儿子央求我带他一起去接妈妈,说他都有好几天没见到妈...
    a行者无疆123阅读 212评论 0 1