开个随笔记录一下日常的问题

工作积累、学习积累

 

————————————————————————————————————————————————————————————————————————————————————

2019.09.07

Q:div的height属性由0和auto之间切换时,不会触发transition的效果

A:使用max-height属性,20200520 补充: 不能用百分号!换成px!

注:当值是auto时不会有效果,建议给一个较大的值

 

—————————————————————————————————————————————————————————————————————————————————————

2019.09.09

Q:本地文件不能通过ajax访问本地json

A:

  Windows:设置Chrome的快捷方式属性,在“目标”后面加上--allow-file-access-from-files,注意前面有个空格,重新打开Chrome即可。

  Mac:只能通过终端打开浏览器:打开终端,输入下面命令:open -a "Google Chrome" --args --disable-web-security然后就可以屏蔽安全访问了[ --args:此参数可有可无]

 

—————————————————————————————————————————————————————————————————————————————————————

2019.09.10

Q:JS打印网页

A:window.print()   在IE中会跳过打印预览,但在chrome和360中会默认打开预览。为了测试可以选择保存为本地pdf。

Q:Img加载失败时加载默认图片

A:通过<img onerror="onerror='';className='showErrorImg'">  在Img的onerror中可以直接写js语句,当图片加载失败时执行。

Q:git第一次提交时 git push 失败

A:git push -u origin master 一定要写完整!

 

————————————————————————————————————————————————————————————————————————————————————————————————

2019.09.11

Q:用vw做font-size单位时,firefox打印时比chrome字体小

A:chrome最小只会12px

  解决办法:可以通过缩放chrome解决。

       本次需求是打印时除chrome外浏览器字体太小,因此在媒体查询打印时 字体最小为12px;标题最小为14px;

Q:icon在服务器上变成乱码

A:紧急解决。替换为img。猜测由于项目编码导致。

 

——————————————————————————————————————————————————————————————————————————————————————————————————

2019.09.12

Q:移动端点击图片放大,并且可以支持缩放

A:借用swiper库,之后贴上详细链接

Q:PC监听鼠标键盘20秒无动作自动退出

A:学习优秀代码,先码再品,之后贴上详细链接

  监听鼠标键盘  链接:https://www.cnblogs.com/zhuxingqing/p/11511529.html

 

———————————————————————————————————————————————————————————————————————————————————————————————————

2019.09.17

Q:背景图随着容器div大小伸缩

A: background-size: cover;

  background-repeat: no-repeat;

  background-image: url(...);

 

2019.09.18

Q:vue在控制台报警告

A: ① 标签名完全非法,不符合 <标签名></标签名> 的格式

  ② 与HTML原有的标签重名,比如图中的header标签为html5新增语义化标签

  ③ 与 Vue 保留的 slot、partial、component 重名

Q:使用margin-left制作过渡动画时,导致页面容器被撑大,疑似页面缩放失效

A:在父级元素加上overflow: hidden

 

——————————————————————————————————————————————————————————————————————————————————————————————————

2019.09.19

Q:display在none和block之间变换时,无法通过transition附加过渡动画

A:建议使用visible + opacity添加过渡动画

  注:如果在使用某些框架的组件(如panel组件),无法拒绝使用display的情况下,可以自己定义动画如下:

    

@keyframes dis-tran-show{
   0% {
        opacity: 0;
   }
   100% {
        opacity: 1;
   }
 }
 .layui-colla-content{
    animation: dis-tran-show 1s ease-out;
 }

    将这个class添加到元素上也可以实现过渡效果

 

Q:前端加密url中参数

A:

var url = "./table.html?" + window.btoa(window.encodeURIComponent("id=1232"))
var encode = url.split('?')[1]
console.log(window.decodeURIComponent(window.atob(encode)))

 

——————————————————————————————————————————————————————————————————————————————————————————————————

2019.09.20

Q:JS计算两个日期直接相差天数

A:(dt2.getTime() - dt1.getTime()) / 1000*60*60*24

Q:后端穿回来的字符串带了转义字符怎么处理

A:创建一个dom对象,使用dom的innerHTML转成字符串穿回来变成JSON格式

  例:

     var htmlStr = "{&quot;other&quot;:&quot;&quot;,&quot;value&quot;:&quot;无症状,&quot;}"
        var hide = document.createElement('div')
        hide.innerHTML = htmlStr
        res = JSON.parse(hide.innerHTML)
        value = res.value

Q:layui中根据后端数据重新渲染checkbox怎么做

A:对checkbox处理和其他一样,重要的是需要最后render重新渲染

  

  layui.use(['form', 'element', 'layer'], function () {
      var form = layui.form
      var element = layui.element
      var layer = layui.layer
//获取复选框数组
      var zzInput = document.querySelectorAll('#zz input')
      zzInput = Array.prototype.slice.call(zzInput)
      zzInput.forEach((item, index) => {
          //重置选中状态
          item.checked = false
          if (value.indexOf(item.title) !== -1) {
              item.checked = true
          }
      })
    //layui需要重新渲染
      form.render('checkbox')
    })

 

——————————————————————————————————————————————————————————————————————————————————————————————————————

2019.09.21

Q:动态获取JS对象的属性值

A:例:已知 dt= {other:"", value: "无症状"}, 需要根据参数去获取other或者value

           var key = "value";   return dt[key];  //key可以为传入的参数

 

——————————————————————————————————————————————————————————————————————————————————————————————————————

2019.10.19

Q:在form表单的onSubmit中调用的方法里使用event.preventDefault() 或是 return false 都不生效

  

       

 A:form中修改为 onSubmit={this.handleLogin}

  通过alert event发现为undefiened,推测箭头函数中导致event丢失

 

Q:axios回调写成function时this失效

  

 

   此时this为 undefined

A:修改为箭头函数后,this指向当前组件

  

 

————————————————————————————————————————————————————————————————————————————————————————————————————————

2019.10.30

Q:JSON串转换报错,未知的语法错误

A:打开https://www.json.cn/,在控制台中把JSON串打印出来,粘贴到格式化工具中,能看到具体的错误。

  本次遇到的问题是:JSON串中含有回车/换行,str.replace(/[\r\n]/g,"") 去除回车和换行,再JSON.parse就好了

 

Q:使用layui的数据表格时,在eclipse中编译报错,说是语法错误

A:由于官网提供的写法有连续两个中括号, 将两个中括号分隔开,

 

————————————————————————————————————————————————————————————————————————————————————————————————————————

2019.11.5

Q:dom.nextSibling 取到了#text这样的东西,原本是想取一下个div

A:使用nextElementSibling,保证取到的是dom节点

 

————————————————————————————————————————————————————————————————————————————————————————————————————

2019.11.9

Q:使用position时,给top:-10%/-10vh; 发现和tranform: translateY(-10%) 的效果不一样,距离差距较大

A:top的参考是父级的块级元素的高度,而translate是参考元素自身的高度

 

——————————————————————————————————————————————————————————————————————————————————————————————————

2019.11.19

Q:摘自之前遇到的问题:

2019.09.07

Q:div的height属性由0和auto之间切换时,不会触发transition的效果

A:使用max-height属性

A:猜测transition只能用于重绘的属性

 

___________________________________________________________________________________________________________________________________________________________________________________________________________

2019.12.10

Q:判断数组中是否包含该对象使用了Array.prototype.indexOf,返回了-1

const beasts = ['ant', {'id':'01','name':'zxq'}, 'camel', 'duck'];
console.log(beasts.indexOf({'id':'01','name':'zxq'})); // -1

 

A:不对用于匹配对象,建议将需要匹配的字段单独取一个数组,再去匹配是否包含

 

___________________________________________________________________________________________________________________________________________________________________________________________________________

2019.12.19

Q:设置opacity做蒙版层时遇到问题,发现蒙版层内的元素也会受到透明度影响

A:子元素的opacity是基于父元素的来计算的,因此父元素应该用background-color: rgba(0, 0, 0, .7); 来实现透明度效果

 

Q:红包页需要下半部分椭圆边框,没有可用的图片

A:父元素overflow:hidden; 当前元素width:200%; top:0; left:-50%; border-radius: 0 0 50% 50%;

 

Q:背景图的宽度自适应

A:background-repeat: no-repeat; background-position: 50%; background-size: 59vw auto;

 

————————————————————————————————————————————————————————————————————————————————————————————————————————

2019.12.31

Q:使用变量作为obj的key

A:https://blog.csdn.net/willingtolove/article/details/89577140 其中 obj = {[key]: value} 是es6语法 有兼容问题

 

 

————————————————————————————————————————————————————————————————————————————————————————————————————————

 

2020.03.18

Q:Java的long型时间戳怎么用JS转换成可读的

A:new Date(parseInt("" + data.pnCreatetime)).toLocaleString()

 

————————————————————————————————————————————————————————————————————————————————————————————————————————

 2020.03.20

 Q:怎么放大input 的checkbox

 A:

 

————————————————————————————————————————————————————————————————————————————————————————————————————————

 2020.03.20

Q:mysql插入语句时总报错

A:后发现可能是列名试用了关键字,没有加反引号,经过手动插入一条后,复制系统生成的语句插入成功

 

————————————————————————————————————————————————————————————————————————————————————————————————————————

 2020.04.20

Q:接到个需求,要给input框添加点击事件,但是input是disabled的

A:此处为disabled和readonly的区别,disabled不可点击不能获取焦点也不能触发点击事件,readonly是可以的

 

 

—————————————————————————————————————————————————————————————————————————————————————

2020.05.19

Q:localStorage时间太长,想添加一个有效时间

A:localstorage本身没有像cookie一样的设置有效时长,需要在setItem同时把now Date() 记录在storage,每次取storage之前取出来做判断。

 

 

—————————————————————————————————————————————————————————————————————————————————————

2020.05.20

Q:vue在加载页面之前判断token是否有效时,无效弹框提醒,发现页面出现 {{p.name}} 的字样

 

 

A:使用 v-clock 可以解决页面闪烁的问题

  用法:   <div id="app" v-cloak></app>

 

——————————————————————————————————————————————————————————————————————————————————————————

2020.05.22

Q:需求:选中checkbox可以把对应的P标签转换成textarea并进行内容编辑,再提交给后端,要求编辑后保存时,保留原换行

A:第一步很简单,checkbox勾选后把innerHTML赋值给新创建的textarea。由于textarea中不能包含<p>等标签,会直接显示出来,所以把每一句拿出来添加 "&#10;” 控制换行。

  问题关键在第二步,提交时发现取不到换行符

  

 

   最终发现通过判断\n能获取到!

 

   解决!

 

 

——————————————————————————————————————————————————————————————————————————————————————————

2020.05.26

Q:string.substr截取字符串怎么用

A: str.substr(0, length) ,注意参数,第一个是起始位置,第二个是结束位置,0为闭区间,length为开区间,即 [0, length)

 

Q:判断字符串的最后一个回车是否在结尾

A:if (str.lastIndexOf("\n") === str.length-1) {}

  

 Q:子元素设置了margin,父元素没有,但父元素也会产生margin效果?

 A:父子元素和相邻元素会触发margin合并

 

———————————————————————————————————————————————————————————————————————————————————————————

2021.2.24

Q:如何查看jquery元素绑定的方法

A:$._data($('#publicBtn').get(0))     其中$('#publicBtn')为我需要查看的按钮

示例结果如下: