被忽略的小知识点1


html表单元素

<
label>label文本
<input/>// 如果将input包裹在label中,点击label文字,input输入框会自动获取焦点
</
label>
1.disabled 和readonly 都是只读,而不能修改,但是 发送请求的时候,disabled 这个元素的值并不会发送到后端,而readonly可以
2.表单验证尽量使用第三方库 比如 formvalidator 等第三方库
3.select 分组
<select name='st[]' multiple>
<optgroup>分组一</optgroup>
<optgroup>分组二</optgroup
</select>
4.<input type='file' name='ufile[]' multiple>文件上传, 有时候 下拉框和文件上传增加multiple 多选属性后,后台直接接收,往往只能接收到一个数据==
【小技巧, 在name属性中加上[],这样后台直接接收也能有多个数据】
5.上传的实现,按理来说应该严格限制上传文件类型,当涉及到 图片等文件的上传 form表单 需要添上 enctype='mulpart/form-data' 属性

6.input type='date', 日期类型 几个属性 min:起始日期,max:结束日期, step:天数间隔,表示隔几天才能选择


7、字符串 slice substr substring
  slice/substring(1,3) 都是截取 1-3 位置间的字符并返回 substr 是从位置1开始,往后截取三位 并返回
  slice(0, -3) 截取 都是 从左往右 截取 就算负值 也是 !!!

 js中的类型转换:

   let str = '99';
    console.log(str + 99);//此时输出 9999,因为string类型 直接与数字相加,默认是字符串连接
      1.console.log(str*1 + 99)      //这两种方式实现字符数字 加法
      2.console.log(Number(str) +99)


  ‘99’-55 =》 44 系统默认会把字符数字 变成 数字类型!

     let string = '99abc';
     console.log(parseInt(string))  =>99 后面字符串自动忽略;
 
  /* 其实完整的 string/number/boolean/arr 定义方法
    let str = new String('abc');//这里str是 object类型
    既然是对象类型,就可以用里面的构造方法
    str.substr(1);
    直接 let str = 'abc'; str.substr(1); 其实系统默认会把str变成上面完整定义string那样变成对象!!!然后调用string里面的方法!
 
  /* boolean 中小知识点
    一、隐式转换
    let num = 99;
    if(num) console.log('true') =>true; 当数值类型直接当做if条件是,系统默认会把它转成Boolean,并且为true 
    但是 if(num == true ) console.log('true') =>不打印true 因为num ==true 比较时,因为num为数值 系统默认 会把true也转成数值==1【false==0】,
    99 !== 1;所以判断不成立!!! 字符串类型的数字原理一样!!! 
     let arr = [1];//数组只有一个元素1时 做判断 arr==true 成立
     let arr1 = [1,2,3];
     if(arr == true){ } =>等于  因为系统默认把arr转成数值【Number(arr) == 1,如果是空数组转成0!!!】,true转成数值 ==1
     if(arr1 == true){ } =>不等于 因为系统默认把arr1转成数值,但是数组元素多于1个,转成数值为 NaN  !== 1 所以不满足 
     if([]/{}){console.log('abc')} => 这里空数组和空对象都满足if判断,因为 原理就是 Boolean([]/{}) == true  将空数组和空对象转成Boolean,而且转的结果就是true!! if(true){满足if,进入} 
     */
    //总结就是 数值除了0都为真,字符串除了空字符串都为真,数组,对象等引用类型都为真,包括空对象和空数组!!!【原理就是 Boolean() 】
    console.log(Boolean([]), Boolean({})); // => true true
    /* 二、显示转换
     1. !! 加上一个!就会发生取反【默认会转成boolean再取反,再加一个!取反,就达到显示转成boolean】,  
     2.上面显示转换原理:直接使用方法  Bollean(string/number/array/object);
     */
 
     /* while(true){} 应用场景之一:
    如果想让用户输入非空内容【使用trim()去掉前后空格】在退出
    while(true){//死循环
         const year = prompt('请输入非空内容').trim();
         if(!year){ continue;}//如果一直为空或者输入空白字符串就继续,直到输入非空内容    
         
         break;//一旦输入非空内容就退出死循环!!!
     }
    */
 
   /* 各种类型的一些方法
    数值:Number
    Number
    .toString(); 转字符串
    .isInterger(); 判断是否整数
    .toFixed(2) 如果有小数点 保留两位
    parseInt/Float('123.123abc')=> 123/123.123 /  parseInt/Float('abc123.123abc') => NaN!
    .isNaN() 判断是否是 NaN / Object.is( 2/'abc', NaN ); Object。is(),判断类型 第一个参数要判断的元素 ,第二个 期望的类型 
    NaN:Not a Number =>  Number('abc')=>NaN 2/'abc'=>NaN
    但是 NAN 没办法跟自己比较 console.log(NaN == NaN )=>false  
    Number([])=>0 Number( [1] )=>1 Number([1,2,3]) =>NaN
    转成数值是很有必要的,因为很多时候表单里面输入的内容,包括纯数字,其实都是字符串类型的数字!
    */

    /* Math  数学方法
     Math
     .max(1,3,6,8,10)
     .min(1,3,6,8,10) 最大10最小数1,默认不支持数组!!!因为默认只支持多参数
     .ceil(5.1) =>6 上取整
     .floor(5.1)=>5 下取整
     .round() 四舍五入
     .random() 获取随机数 默认范围 >=0 <1 不会等于1
     结合 下取整 得到任意区间的随机数:
    */
    console.log(Math.floor(Math.random() * (5 + 1)), '得到 0-5 [不加1只能取到0-4,因为下取整] 之间的任意整数!!!');
    /* 一个小公式  取 n-m 之间的随机数
    n+ Math.floor(  Math.random()*(m-n+1) ) //包含m就加一,不包含不用加
     */




  

 

原文地址:https://www.cnblogs.com/Hijacku/p/14469936.html