首页 > 其他分享 >js面向对象浅析-表单生成

js面向对象浅析-表单生成

时间:2023-08-29 16:22:31浏览次数:40  
标签:function obj attr 表单 html var js 浅析 option

js面向对象浅析-表单生成

前言:这里就表单生成器的案例对js面向对象分析一下。。。

(function (window){
    var FormBuilder=function(data){
      this.data=data;
    };
    window.FormBuilder=FormBuilder;
})(window);

FormBuilder.prototype.create=function(){
    var html="";
    for(var k in this.data){
        var item={tag:"",text:"",attr:{},option:null};
        for(var n in this.data[k])
        {
            item[n]=this.data[k][n];
        }
        html+=bulider.toHTML(item);
    }
    return '<table>'+html+'</table>';
};

var bulider={
    toHTML:function(obj){
        var html=this.item[obj.tag](this.attr(obj.attr),this.option);
        return '<tr><th>'+obj.text+'</th><td>'+html+'<td></tr>';
    },
    attr:function(attr){
        var html="";
        for(var k in attr){
            html+=k+'="'+attr[k]+'"';
        }
        return attr;
    },
    item:{
        input:function(attr,option){
          var html=" ";
          if(option===null){
            html+='<input '+attr(attr)+'>';
          }else{
              for(var k in option){
                  html += '<label><input '+attr+'value="' + k+'"'+'>';
                  html+=option[k]+'</label>'
              }
          }
          console.log(html);
          return html;
        },
        select:function(attr,option){
             var html="";
             for(var k in option){
                 html+='<option value="'+k+'">'+option(k)+'</option>';
             }
             return '<select'+attr+'>'+html+'</select>';
        },
        textarea:function(attr){
            return '<textarea'+attr+'></textarea>'
        }
    }
};

解析:
这是面向对象思想的js编程,将标签都封装成对象
比如将<input type="text" name="user">封装成

{
 tag:'input',
 text:'姓名',
 attr:{type:'text',name:'user'},
 option:'null'
}

首先通过立即执行函数建立建立自己的FormBuilder构造函数,这体现了函数的封装性,避免了全局变量污染,然后通过在FormBuilder的原型链上编程,创建自己create函数,然后变成html,最后插入页面。。
这样写避免了直接修改HTML代码,便于以后的开发和维护,但这样失去了易读性。。。

注意:在面向对象编程时,不得不注意,this的指向问题,

如果是new出来的构造函数,this指的就是自己。
如果直接调用一个方法,this指的是window。
如果是一个对象的方法指的就是这个对象。
比如

var bulider={
    toHTML:function(obj){
       //在这里的this指的是bulider这个对象。。
        var html=this.item[obj.tag](this.attr(obj.attr),this.option);
        return '<tr><th>'+obj.text+'</th><td>'+html+'<td></tr>';
    },

 

标签:function,obj,attr,表单,html,var,js,浅析,option
From: https://www.cnblogs.com/tomcat2022/p/17665172.html

相关文章

  • 11个有趣且实用的js库
    大家好,今天给大家分享几个前端实用的库。为了帮助你节省一些时间并提高工作效率,下面这些插件库你一定能用的上!1.BigPictureBigPicture是一款轻量级且独立于框架的JavaScript图像/视频查看器插件。可以使用<img>标签以及背景图像,支持Youtube、Vimeo、直接视频链接、任何......
  • Gson读取json字符串中结果需要转泛型的情况解决方案
    原始代码:Gsongson=newGson();ArrayList<Fld>fixed=gson.fromJson(newFileReader(headFilePath),ArrayList.class);for(Fldfld:fixed){intfld_len=fld.getFld_len();}错误显示:com.g......
  • 直播平台开发,利用原生JS实现回到顶部以及吸顶效果
    直播平台开发,利用原生JS实现回到顶部以及吸顶效果  <style>    .box1{      width:1200px;      height:800px;            margin:0auto;    }    .box2{      width:1200px; ......
  • Gson与FastJson详解
    Gson与FastJson详解Java与JSON做什么?将Java中的对象快速的转换为JSON格式的字符串.将JSON格式的字符串,转换为Java的对象.Gson将对象转换为JSON字符串转换JSON字符串的步骤:引入JAR包在需要转换JSON字符串的位置编写如下代码即可:Stringjson=newGson().toJSON(要转换的对象......
  • js找出一定范围内的全部素数(埃拉托斯特尼筛法Sieve of Eratosthenes)
    最近在看js的基础,看到函数这一章的时候,看到了这种写法。 原文链接:https://zh.javascript.info/function-basics突然懵了个B,js还能这么写。然后问了下chat,才想起来这是js的标签用法。在JavaScript中,标签(label)是一种标识符,用于标记代码中的特定位置,通常是在循环语句中使用。标......
  • Gson与FastJson详解
    Gson与FastJson详解Java与JSON做什么?将Java中的对象快速的转换为JSON格式的字符串.将JSON格式的字符串,转换为Java的对象.Gson将对象转换为JSON字符串转换JSON字符串的步骤:引入JAR包在需要转换JSON字符串的位置编写如下代码即可:Stringjson=newGson().toJSON(......
  • 017-管理后台通用js提取
    //定义全局常量,可供全局使用varzhuhuo={config:{},//bootstrap-table属性配置信息options:{},/***参数初始化*/set:function(id){ //判断配置信息里面是否有值,且当前的事件监听不为空if($.tools.getLength(zhuhu......
  • nodejs的安装及使用
    安装打开Node.js的官网并下载适用于你操作系统的安装包。Node.js提供了Windows、Mac和Linux的安装包。下载完成后,双击安装包运行安装向导。按照提示一步步进行安装。在安装过程中可以选择自定义安装路径,也可以使用默认路径【强烈建议安装在C盘】安装完成后,打开命令提示符(Windo......
  • Java 15 JSTL实现登录退出
     jstl.jsp<%@pagecontentType="text/html;charset=UTF-8"language="java"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><%--if--%><%@taglibprefix="fmt"uri=&......
  • 用js reduce 写一个reduce循环遍历数组对象,里面带有if判断
    简单的reduce案例,实际场景中使用不多,这里给到一个常用的遍历数组对象!!varproducts=[{name:"Apple",price:2.5,quantity:3},{name:"Banana",price:1.5,quantity:2},{name:"Orange",price:3,quantity:4},];vartotalPrice=products......