零JS筆記 | 最簡單的圖片切換 | index

最簡單的圖片切換一

window.onload = function () {
  var _prev = document.getElementById('prev'),
  _next = document.getElementById('next'),
  _txt = document.getElementById('txt'),
  _count = document.getElementById('count'),
  _img = document.getElementById('img'),
  num = 0,
  imgDate = {
    txt: ['校園美女一','校園美女二','校園美女三',
      '校園美女四','校園美女五','校園美女六'],
    img: ['../img/jc1.png','../img/jc2.png','../img/jc3.png',
        '../img/jc4.png','../img/jc5.png','../img/jc6.png']
  }
  //初始化

  tabImg()
  var len = imgDate.txt.length;
  _next.onclick = function () {
    num++;
    if (num == len) {
      num = 0;
    }
    tabImg()
  }
  _prev.onclick = function () {
    num--;
    if (num == - 1) {
      num = len - 1
    }
    tabImg()
  }
  function tabImg() {
    _txt.innerHTML = imgDate.txt[num];
    _count.innerHTML = (num + 1) + '/' + len;
    _img.src = imgDate.img[num];
  }
}

運行



最簡單的圖片切換二

注意:this指向;

步驟:初始化,寫循環每一個,合並函數[num = this.index;tab()],注意this指向;

on切換:1、全清空,當前添加;2、創建上一個狀態變量:prevLi = null; 清空上一個

for (var i = 0; i < lis.length; i++) {
  lis[i].className = '' //全清空
}
this.className = 'on'//當前添加

var prevLi = null; 
prevLi = li[num]; //先存上一個狀態;
prevLi.className = '' //點擊時把上一個狀態清除
prevLi = this; //再把當前付給上一個,形成循環
this.className = 'on' //當前添加

運行



菜單收縮

1、關鍵在於找元素;配合index,找到每一個h2,對應自已的ul;

2、每一個ul下,對應自己的li,即需要for套for;

3、for套for中,有fn的,不需要改i,無fn的,需要改變j;

4、判斷的方法,this.className = '';

5、找到li,因事件一致,可先存在數組裏,以數組來操作;

<ul id='list'>
    <li>
        <h2>aaaaaa</h2>
        <ul>
            <li> a-a-a-a-a-a</li>
            <li> a-a-a-a-a-a</li>
            <li> a-a-a-a-a-a</li>
        </ul>
    </li>
    .....
</ul>
var list = document.getElementById('list')
var h2 = document.getElementsByTagName('h2')
var _ul = list.getElementsByTagName('ul')
var _li = null;
var arrLi = [
];
var on = true;
for (var i = 0; i < h2.length; i++) {
  h2[i].index = i; //索引值對應 每個 h2 -> ul
  h2[i].onclick = function () {
    if (this.className == '') {
      //1、當前展開,其他收縮
      for (var i = 0; i < _ul.length; i++) {
        _ul[i].style.display = 'none'
        h2[i].className = ''
      }
      _ul[this.index].style.display = 'block'
      this.className = 'on'
    } 
    else {
      _ul[this.index].style.display = 'none'
      this.className = ''
    }
  }
}
for (var i = 0; i < _ul.length; i++) { //找到所有h2下 ul
  _li = _ul[i].getElementsByTagName('li') //找到所有li
  for (var j = 0; j < _li.length; j++) {
    arrLi.push(_li[j]); //所有li存放在arrLi裏
  }
}

//for 套for ,內部的fn,可不改i,無fn,必須改i
for (var i = 0; i < arrLi.length; i++) { //操作數組,即相當於操作li
  arrLi[i].onclick = function () {
    //2、當前點擊取消
    if (this.className == '') {
      for (var i = 0; i < arrLi.length; i++) {
        arrLi[i].className = ''
      }
      this.className = 'hover'
    } 
    else {
      this.className = ''
    }
  }
}

See the Pen doxZvW by elmok (@elmok) on CodePen.


<script async src="//assets.codepen.io/assets/embed/ei.js"></script>

簡單系統時間

var nowTime = new Date();//typeof object
下面出來的都數字類型:number
nowTime.getFullYear() //年
nowTime.getMonth() + 1 //月 從0開始算,所以需加1
nowTime.getDate() //日
nowTime.getDay() //星期
nowTime.getHours() //時
nowTime.getMinutes() //分
nowTime.getSeconds() //秒

Time()
setInterval(Time, 1000)
function Time() {
  var nowTime = new Date(); //typeof object
  var _year = nowTime.getFullYear();
  var _month = nowTime.getMonth() + 1;
  var _date = nowTime.getDate();
  var _week = nowTime.getDay();
  var _hours = nowTime.getHours()
  var _minutes = nowTime.getMinutes();
  var _seconds = nowTime.getSeconds();
    switch (_week){
        case 0:_week='星期日';break;
        case 1:_week='星期一';break;
        case 2:_week='星期二';break;
        case 3:_week='星期三';break;
        case 4:_week='星期四';break;
        case 5:_week='星期五';break;
        case 6:_week='星期六';
    }
  document.body.innerHTML = _year + '年' + _month + '月' + _date + '日  ' + _week + ' ' + toTwo(_hours) + ':' + toTwo(_minutes) + ':' + toTwo(_seconds);
}
function toTwo(n) {  //單數轉雙數
  return n = n < 10 ? '0' + n : '' + n;
}

圖片日期要點:日期共6位,使用str.charAt(i)獲取每一位數字,與圖片名字相對應

str = toTwo(_hours)+toTwo(_minutes)+toTwo(_seconds);
for(var i=0;i<str.length;i++){
    img[i].src = '../img/timePic/'+ str.charAt(i)+'.JPG'
}

運行

倒計時:
設置時間形式:
數字形式:new Date(2013,6,22,01,19,54)
字符串形式:new Date('June 10,2013 12:01:20')
思想:(未來時間 - 當前時間)/1000 = t //秒

套用

天:Math.floor(t/86400)
時:Math.floor(t%86400/3600)
分:Math.floor(t%86400%3600/60)
秒:t%60
Math.floor(t/86400)+'天'+ Math.floor(t%86400/3600)+'時'+ Math.floor(t%86400%3600/60)+'分'+t%60+'秒'

一月:January 简写Jan.
二月:February 简写Feb.
三月:March 简写Mar.
四月:April 简写Apr.
五月:May 简写May.
六月:June 简写Jun.
七月:July 简写Jul.
八月:August 简写Aug.
九月:September 简写Sep. / Sept.
十月:October 简写Oct.
十一月:November 简写Nov.
十二月:December 简写Dec.
開始時間:<input type="text" value="August 29,2015 1:39:59"/>
剩余時間:<input type="text"/>
<input type="button" value="Start"/>
var nowTime = new Date();
//var newTime = new Date(2013, 5, 22, 1, 39, 59);
var newTimeE = new Date('August 29,2014 1:39:59')
var t = Math.floor((newTimeE - nowTime) / 1000); //newTime - nowTime 毫秒單位 t為秒
var str = Math.floor(t / 86400) + '天' + Math.floor(t % 86400 / 3600) + '時' + Math.floor(t % 86400 % 3600 / 60) + '分' + t % 60 + '秒'
var inp = document.getElementsByTagName('input')
var inow = null;
var inew = null;
var timer = null;
inp[2].onclick = function () {
  clearInterval(timer)
  inew = new Date(inp[0].value)
  timer = setInterval(function () {
    inow = new Date();
    var tt = Math.floor((inew - inow) / 1000);
    if (tt >= 0) {
      var str = Math.floor(tt / 86400) + '天' + Math.floor(tt % 86400 / 3600) + '時' + Math.floor(tt % 86400 % 3600 / 60) + '分' + tt % 60 + '秒'
      inp[1].value = str;
    } 
    else { //倒計時完成後動作
      clearInterval(timer)
    }
  }, 1000)
}

new Date().getTime() //時間戳:1970年1月1日0點0分0秒0毫秒 距離現在多長時間,毫秒為單位