HTML&JS笔记

这篇博客介绍了JavaScript中数组的splice方法、取整取余运算、iframe加载处理、QRCode.js库的使用以及不同类型的循环跳出方式。通过示例展示了如何删除、插入数组元素,进行数学计算,监听iframe加载事件,生成二维码以及在forEach、for循环中中断执行的多种方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、js数组操作

    1、删除某一项
        splice(index,len,[item]);该方法会改变原始数组
        var arr = ['a','b','c','d'];
        arr.splice(1,1); // ['a','c','d']
        arr.splice(1,1,'0'); // ['a','0','c','d']
        arr.splice(1,2,'0'); // ['a','0','d']
        arr.splice(1,0,'0'); // ['a','0','b','c','d']
        delete arr[1];// ['a',undefined,'c','d']

二、取整取余操作

    parseInt(5/2); // 2 丢弃小数部分
    Math.ceil(5/2); // 3 向上取整,有小数就将整数部分加1
    Math.floor(5/2); // 2 向下取整,丢弃小数部分
    Math.round(5/2) // 3 四舍五入
    6%4; // 2 取余

三、iframe 加载完成处理

var iframe = document.createElement("iframe");
iframe.src = "https://";

if (iframe.attachEvent){
  iframe.attachEvent("onload", function(){
  alert("Iframe is now loaded.");
});
} else {
  iframe.onload = function(){
    alert("Iframe is now loaded.");
  };
}

document.body.appendChild(iframe);

四、常用插件

    QRCode.js 是一个用于生成二维码的 JavaScript 库。主要是通过获取 DOM 的标签,再通过 HTML5 Canvas 绘制而成,不依赖任何库。
    Highlight.js 是一个代码高亮显示插件,可根据不同的编程语音和编程工具显示代码

五、跳出循环

[1,2,3,4,5].forEach(item => {
    if (item === 3) {
        return; // 跳出本次循环继续执行,终止需要使用throw new Error('error')
    }
    console.log(item);
});
// 输出 1 2 4 5

for (var i = 1; i <= 5; i++) {
    if (item === 3) {
        return false;
    }
    console.log(i);
}
console.log('end'); // 未执行
// 输出 1 2

for (var i = 1; i <= 5; i++) {
    if (item === 3) {
        break;
    }
    console.log(i);
}
console.log('end');
// 输出 1 2 end

for (var i = 1; i <= 5; i++) {
    if (i === 3) {
        continue;
    }
    console.log(i);
}
console.log('end');
// 输出 1 2 4 5 end

aa:for (var i = 1; i <= 5; i++) {
    for (var ii = 1; ii <= 5; ii++) {
        if (ii === 3) {
        break aa;
        }
        console.log('ii',ii);
    }
    console.log('i',i);
}
console.log('end');
// 输出 'ii 1' 'ii 2' 'end'

六、字符串日期转换

    yyyyMMdd转yyyy-MM-dd:'20240101'.replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3");
    yyyyMMddHHmmss转yyyy-MM-dd HH:mm:ss:'20240101000000'.replace(/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/, "$1-$2-$3 $4:$5:$6");

七、日期操作

// 本周开始和结束
let firstDayOfWeek = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate() - currentDate.getDay() + 1);
let lastDayOfWeek = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate() + (7 - currentDate.getDay()))
// 本月开始和结束
let start = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1);
let end = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0);				
// 获取最近3个月的开始和结束 dayStr(yyyy-MM-dd)
get3MonthDay(dayStr) {
  let end = new Date(dayStr);
  let year = end.getFullYear();
  let month = end.getMonth() + 1; // 0-11表示1-12月
  let day = end.getDate();
  let dateObj = {};
  dateObj.end = year + '-' + month + '-' + day;
  let endMonthDay = new Date(year, month, 0).getDate(); // 当前月的总天数
  if (month - 3 <= 0) { // 如果是1、2、3月,年数往前推一年
    var start3MonthDay = new Date((year - 1), (12 - (3 - parseInt(month))), 0).getDate(); //3个月前所在月的总天数
    if (start3MonthDay < day) { // 3个月前所在月的总天数小于现在的天日期
      dateObj.start = (year - 1) + '-' + (12 - (3 - month)) + '-' + start3MonthDay;
    } else {
      dateObj.start = (year - 1) + '-' + (12 - (3 - month)) + '-' + day;
    }
  } else {
    var start3MonthDay = new Date(year, (parseInt(month) - 3), 0).getDate(); // 3个月前所在月的总天数
    if (start3MonthDay < day) { // 3个月前所在月的总天数小于现在的天日期
      if (day < endMonthDay) { // 当前天日期小于当前月总天数,2月份比较特殊的月份
        dateObj.start = year + '-' + (month - 3) + '-' + (start3MonthDay - (endMonthDay - day));
      } else {
        dateObj.start = year + '-' + (month - 3) + '-' + start3MonthDay;
      }
    } else {
      dateObj.start = year + '-' + (month - 3) + '-' + day;
    }
  }
  return dateObj;
}

八、页面离开和显示事件visibilitychange

// 当需要判断页面重新显示时(比如从A页面切换tab标签到B页面再回来时)可以监听这个事件来进行相应的操作,比如stompjs在tab标签后台运行时会断开连接那么就需要重新进入时重新进行连接
window.addEventListener("visibilitychange", () => {
    console.log("page is visible/hide:" + document.visibilityState)
	if (document.visibilityState === 'visible') {}
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值