前端经验

jq 无法获得字符串拼接的id

for(var i=1;i<=3;i++)
{
    $("#a"+i).html("我是"+i); // 红色部分是不识别的。
}

大家注意这个写法 "#a"+i (简单的拼接字符串),这个写法jq是不识别的,会返回null值,但是getElementById() 识别这个写法。
但是此处我不想用getElementById()这个方法,想用jq的方法写。
解决方案如下:
用eval()函数,
此处我们可以这么写 $(eval("a"+i)).html("我是"+i); ,jq就识别了,知道你要找的是id等于a1的对象了。
切忌,不要加 # 号 。
加的话作用就消失了,还是会返回null值的。

setTimeout 出现闭包问题

setTimeout这个方法是window对象的方法,用于在指定的毫秒数后调用函数或计算表达式。
window对象,window对象,window对象!!!

解决办法两种,第一种使用闭包
for (var i = 1; i <= 5; i++) {
  (function(j) {
    setTimeout(function timer() {
      console.log(j);
    }, j * 1000);
  })(i);
}
第二种就是使用 setTimeout 的第三个参数
for ( var i=1; i<=5; i++) {
    setTimeout( function timer(j) {
        console.log( j );
    }, i*1000, i);
}
第三种就是使用 let 定义 i 了
for ( let i=1; i<=5; i++) {
    setTimeout( function timer() {
        console.log( i );
    }, i*1000 );
}

JS操作文件

  • 保存的时候不能直接保存打开的json文件,还需要"下载"这一步
  • js不允许直接操作本地数据文件
    var content = JSON.stringify(barInfo);
    var blob = new Blob([content], {type: "text/plain;charset=utf-8"});
    saveAs(blob, "myjson1.json");

onClick 跟onplay 混淆了

myVideo.play(); //触发play 导致盗用了下面的onplay

多用ajax 的回调函数

全部评论
https://blog.csdn.net/u013884068/article/details/50850629 前端变量作用区域
点赞 回复 分享
发布于 2019-11-17 15:13
https://blog.csdn.net/qq_33297737/article/details/86515958 setTimeout在循环中无法正确延时的问题
点赞 回复 分享
发布于 2019-11-17 15:38
https://blog.csdn.net/u012872875/article/details/52601477 关于for循环中引用setTimeout
点赞 回复 分享
发布于 2019-11-17 16:03

相关推荐

吃不饱的肱二头肌很想退休:tnnd 我以为选妹子呢,亏我兴高采烈的冲进来😠
投递快手等公司10个岗位
点赞 评论 收藏
分享
dongsheng66:如果想进大厂的话,在校经历没必要占这么大篇幅,可以把专业技能单独放一个专栏写,可以加个项目经历
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务