js

new Date()

在JS中獲取當前時間對象和JAVA類似学搜。都是先創(chuàng)建出一個時間對象衬潦,用變量進行接收。var myDate= new Date();

  • 獲取當前年份
    var myYear=myDate.getFullYear();
  • 獲取當前月份,(java和js中)月份是從0開始的,所以要加1
    var myMonth = myDate.getMonth()+1;
  • 獲取當前日期
    var date =myDate.getDate();
  • 獲取當前是星期幾,如果是周日則返回0.
    var myDay=myDate.getDay();
  • 獲取當前小時
    var hour =myDate.getHours();
  • 獲取當前分鐘
    var min =myDate.getMinutes();
  • 獲取當前秒
    var sec =myDate.getSeconds();

動態(tài)顯示時間

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script type="text/javascript">
            window.onload=function(){
                var oBox =document.getElementById('box');
                var oP=document.getElementById('imgTime');
                
                function runTime(){
                    var myDate =new Date();
                    var year =myDate.getFullYear();
                    var mon =myDate.getMonth()+1;
                    var day =myDate.getDate();
                    var hour =myDate.getHours();
                    var min =myDate.getMinutes();
                    var sec =myDate.getSeconds();
                    
                    var strDate = formatTime(year)+'-'+formatTime(mon)+'-'+formatTime(day)+'    '+formatTime(hour)+':'+formatTime(min)+':'+formatTime(sec);
                    
                    var strDate1 = formatTime(hour)+':'+formatTime(min)+':'+formatTime(sec);
                    oBox.innerHTML = strDate;
                    
                    for(var i =0;i<strDate1.length;i++){
                        var num = strDate1.charAt(i);
                        if(i != 2 && i != 5){
                            var aImg=oP.getElementsByTagName('img');
                            aImg[i].src = 'img/'+num+'.JPG';
                        }
                    }
                }
                
                runTime();
                var timer = setInterval(function(){
                    runTime();
                },1000);
                
                function formatTime(date){
                    if(date<10){
                        date = '0'+date;
                    }
                    return date;
                }
                
            }
        </script>
    </head>
    <body>
        <div id="box">
            
        </div>
        <p id="imgTime">
            <img src="img/0.JPG">
            <img src="img/0.JPG">
            <img src="img/colon.JPG" >
            <img src="img/0.JPG">
            <img src="img/0.JPG">   
            <img src="img/colon.JPG" >
            <img src="img/0.JPG">
            <img src="img/0.JPG">
        </p>
    </body>
</html>

日期差的運用

var myDate1 = new Date(2019, 3, 16, 15, 22, 0);
var myDate2 = new Date();
var times = myDate1-myDate2;

  • 日期相減為毫秒(myDate1-myDate2 值為毫秒)
  • 天: Math.floor(times/86400);
  • 時: Math.floor(times%86400/3600);
  • 分: Math.floor(times%86400%3600/60);
  • 秒: Math.floor(times%60);

倒計時

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <div id="datetime">

        </div>
        <script type="text/javascript">
            function djs() {
                var myDate1 = new Date(2019, 3, 16, 15, 22, 0);
                var myDate2 = new Date();
                var times = Math.floor(myDate1 - myDate2) / 1000;

                document.getElementById('datetime').innerHTML = Math.floor(times / 86400) + '天' + Math.floor(times % 86400 / 3600) +
                    '時' + Math.floor(times % 86400 % 3600 / 60) + '分' + Math.floor(times % 60) + '秒';
            }
            djs();
            timer = setInterval(function() {
                djs();
            }, 1000);
        </script>
    </body>
</html>

字符串操作

    <script>
          var str = 'A前臺技術';
//        alert(str.length);空格占長度
//        alert(str.charAt(2));//找不到的話什么也不顯示
//        alert(str.charCodeAt());// 返回unicode碼
//        alert(String.fromCharCode(22945)); 返回unicode碼代表的字符
//        alert(str.charCodeAt());// 0-9 48-57
//        alert(str.charCodeAt());// a-z 97-122
//        alert(str.charCodeAt());// A-Z 65-90
    </script>

slice和substring都有截取字符串的意思抹凳,slice的應用更貼近于java诬滩。

  • slice 中參數(shù)是一個負數(shù)時,從倒數(shù)位數(shù)截取
  • substring 中參數(shù)是一個負數(shù)時 ,和0一樣

indexOf(v,num)查看字符串v在索引num后出現(xiàn)的位置霹粥。如果返回值為-1則說明沒有找到該字符串v。
lastIndexOf查看字符串出現(xiàn)的所有位置


split(a): var arrStr=str.split(a)將字符串str按照a拆分成數(shù)組疼鸟。a沒了后控。
arrStr.join();//將數(shù)組中的內容用逗號(,)進行拼接
arrStr.join(“”);//將數(shù)組中的內容無縫拼接。


展開/收縮文字

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            #box {
                background: #0F7CBF;
                border: 10px solid red;
                padding: 10px;
                width: 500px;
                margin: 0 auto;
            }
        </style>
    </head>
    <body>
        <div id="box">
            <!-- <span>
                但我家的我阿囧的加我啊就掉進外景地挖機的加我啊降低空镜,
            </span>
            <a href="javascript:;">展開</a> -->
            <span>
                但我家的我阿囧的加我啊就掉進外景地挖機的加我啊降低浩淘,
                但我家的我阿囧的加我啊就掉進外景地挖機的加我啊降低,
                但我家的我阿囧的加我啊就掉進外景地挖機的加我啊降低吴攒,
                但我家的我阿囧的加我啊就掉進外景地挖機的加我啊降低张抄,
                但我家的我阿囧的加我啊就掉進外景地挖機的加我啊降低,
                但我家的我阿囧的加我啊就掉進外景地挖機的加我啊降低洼怔,
                但我家的我阿囧的加我啊就掉進外景地挖機的加我啊降低署惯,
            </span>
            <a href="javascript:;">收縮</a>
        </div>
        <script type="text/javascript">
            var oBox = document.getElementById('box');
            var oSpan = oBox.getElementsByTagName('span')[0];
            var oA = oBox.getElementsByTagName('a')[0];
            
            var text = oSpan.innerHTML;
            var onOff =true;
            oA.onclick = function() {
                if(onOff){
                    var html = oSpan.innerHTML.slice(0, 28);
                    oSpan.innerHTML = html;
                    oA.innerHTML='...展開';
                }else{
                    oSpan.innerHTML = text;
                    oA.innerHTML='收縮';
                }
                onOff = !onOff;
            }
        </script>
    </body>
</html>

數(shù)組

js中數(shù)組的長度是可變的,數(shù)組中可以存儲各種數(shù)據(jù)類型镣隶。
var arr=[1,2,3,4,true,'hello'];
1.快速清空數(shù)組有兩種方法极谊。
①arr=[]什荣;
②arr.length=0;
2.向數(shù)組中添加數(shù)據(jù)有兩種方法。
①在原數(shù)組的末尾添加arr.push(5怀酷,6,7);
②在原數(shù)組的開始位置添加arr.unshift('新數(shù)組第一個元素'嗜闻,'新數(shù)組第二個元素')蜕依。
3.從數(shù)組中刪除數(shù)據(jù)有兩種方法。
①刪除數(shù)組中的最后一個元素琉雳,產(chǎn)生新數(shù)組样眠,并返回最后一個元素的值。arr.pop();
②刪除數(shù)組中的第一個元素翠肘,產(chǎn)生新數(shù)組檐束,并返回第一個元素的值。arr.shift();
4.splice可對數(shù)組進行增刪改
①增加數(shù)據(jù):arr.splice(2,0,'e');
解釋:在索引值為2的位置束倍,增加e被丧,其余元素位置后移。
②修改數(shù)據(jù):arr.splice(2,3,'e');
解釋:在索引值為2的位置绪妹,將從該位置的起的三個元素甥桂,替換成e。
③刪除數(shù)據(jù):arr.splice(1,1)邮旷;
解釋:第一個參數(shù)為索引黄选,第二各參數(shù)為個數(shù)。將索引值為1的元素開始婶肩,刪除一個元素办陷。


利用splice去重數(shù)組中的重復數(shù)據(jù)

<script type="text/javascript">
          var arr =[1,2,3,4,5,6,2,1,4,5,2];
          //選擇排序
          for(var i=0;i<arr.length-1;i++){
                for(var j=i+1;i<arr.length;j++){
                        if(arr[i]==arr[j]){
                              arr.splice(j,1);
                              j--;
                        }
                }
          }
</script>

省市級聯(lián)動(數(shù)組和DOM)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <select name="" id="province">
            <option value="省份" >省份</option>
        </select>
        <select name="" id="city">
            <option value="" >城市</option>
        </select>
        <script type="text/javascript">
            var oPro=document.getElementById('province');
            var oCity=document.getElementById('city');  
            var aPro=['遼寧','河北','湖北'];
            var aCity=[
                ['沈陽','大連','鞍山','撫順','本溪','錦州'],
                ['石家莊','天津','廊坊','承德'],
                ['武漢','襄陽','宜昌','黃石','十堰']
            ];
            for(i in aPro){
                oPro.innerHTML +='<option value="'+aPro[i]+'">'+aPro[i]+'</option>';
            }
            
            // 觸發(fā)改變事件
            oPro.onchange=function(){
                oCity.innerHTML = '<option value="">城市</option>';
                var provalue= oPro.value;
                for(i in aPro){
                    if(aPro[i]==provalue){
                        for(j in aCity[i]){
                            // 創(chuàng)建一個節(jié)點
                            var  oPtion =document.createElement('option');
                            oPtion.value=aCity[i][j];
                            oPtion.innerHTML=aCity[i][j];
                            // 追加一個節(jié)點
                            oCity.appendChild(oPtion);
                        }
                    }
                }
            }
        </script>
    </body>
</html>

json可以將起看成一個對象,該對象由鍵值對組成律歼。(不準確)比較像Java中的map集合民镜。

<script type="text/javascript">
            // json 類似map集合,不恰當?shù)恼f他是一個類似于java的對象
            var json = {
                "name": "張三",
                "age": 16,
                "gender": "男"
            }

            console.log(json['name']);
            console.log(json['age']);
            console.log(json['gender']);

            // 遍歷json,attr為key變量
            // json遍歷寫法類似于java foreach遍歷,只不過擺放位置不一樣,代表的意義不一樣
            for (attr in json) {
                console.log(attr+":"+json[attr]);
            }
</script>

DOM操作(節(jié)點操作)(document object model 文檔對象模型)

我們可以把每個標簽都看作一個節(jié)點,標簽兄弟標簽苗膝,父級標簽殃恒,子標簽。即父節(jié)點辱揭、子節(jié)點离唐、兄弟節(jié)點等,對他們的操作稱為節(jié)點操作问窃。
①獲取節(jié)點:獲取節(jié)點的方式有很多亥鬓,常用的有通過ID、標簽名域庇、類名稱嵌戈、name屬性獲取覆积。
通過ID:document.getElementByID()
通過標簽名:document.getElementsByTagName()
通過類名稱:document.getElementsByClassName()
通過name屬性:document.getElementsByName()
②獲取全部子節(jié)點:返回操作節(jié)點的所有子節(jié)點數(shù)組。
var oList = document.getElementById('list');
var aLi = oList.children熟呛;//獲取子節(jié)點數(shù)組
③獲取第一個子節(jié)點:
var oFlist=oList.firstElementChild;
④獲取最后一個子節(jié)點:
var oLlist=oList.lastElementChild;
⑤獲取某節(jié)點的下一個兄弟節(jié)點:
var oSlist=oList.firstElementChild.nextElementSibling;(獲取第二個子節(jié)點:先獲取第一個子節(jié)點宽档,通過第一個子節(jié)點獲取他的下一個節(jié)點)
⑥獲取某節(jié)點的上一個兄弟節(jié)點:
var oTlist=oList.lastElementChild.previousElementSibling;(獲取倒數(shù)第二個子節(jié)點:先獲取倒數(shù)第一個子節(jié)點,通過倒數(shù)第一個子節(jié)點獲取他的上一個節(jié)點)
⑦獲取父節(jié)點
var oFther=oList.parentNode;
⑧獲取有定位的父節(jié)點
oList.offsetParent
⑨距離有定位的父節(jié)點有多少距離
offsetLeft庵朝,offsetTop吗冤,offsetRight,offsetBottom


!!!!!創(chuàng)建節(jié)點和追加子節(jié)點
var oElement=document.createElement('li');//創(chuàng)建li標簽的對象九府。li標簽可以是任意標簽div椎瘟、a等等。
oLi.appendChild(oElement);//將創(chuàng)建的標簽插入oLi對象所在標簽的子標簽中侄旬。


取消默認事件和confirm提示框

用Botton舉例:創(chuàng)建一個表單肺蔚,表單中輸入內容,如果內容不為空儡羔,則跳轉到鏈接地址宣羊,否則不跳轉。
confirm和alert作用相似汰蜘,但是會返回true或false段只。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <form action="https://www.baidu.com" method="" id="form">
            <input type="text" id="" value="" name="username" />
            <button type="submit">提交</button>
            <button type="reset">重置</button>
        </form>
        <script type="text/javascript">
            var oForm = document.getElementById('form');
            var oBtn = oForm.getElementsByTagName('button')[0];

            oForm.onsubmit = function() {
                if (oForm.username.value != null && oForm.username.value != '') {
                    oForm.submit();
                } else {
                    return false; //取消默認事件
                }
            }

            oForm.onreset = function() {
                if (!confirm("確定重置?")) {
                    return false;
                }
            }
        </script>
    </body>
</html>


BOM操作(browser object model 瀏覽器對象模型)

說白了就是打開鉴扫、跳轉赞枕、關閉瀏覽器窗口

<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <button type="button1">打開窗口1</button>
        <button type="button2">打開窗口2</button>
        <a  target="_blank">打開窗口</a>
        <!-- 
            Bom browser object model 
                關閉窗口
                打開窗口
                跳轉頁面
         -->
         <script type="text/javascript">
            document.getElementsByTagName('button')[0].onclick=function(){
                // 打開窗口(挑IE或者其他瀏覽器的版本,兼容性差)
                window.open("https://www.baidu.com","_self");
            }
            document.getElementsByTagName('button')[1].onclick=function(){
                // 打開窗口(跟上面一樣坪创,但是兼容性更好)
                window.location.;
            }
         </script>
    </body>
</html>

焦點事件和焦點函數(shù)
獲取焦點函數(shù):對象.focus();
獲取焦點事件:

對象.onfocus = function() { //焦點事件
                //oInput.value = 'dwa';
              }

失去焦點函數(shù):對象.blur();
失去焦點事件:

對象.onblur = function() { //焦點事件
                //oInput.value = 'dwa';
              }

全選函數(shù)炕婶、計算函數(shù)

全選函數(shù)描述:設置一個按鈕和一個文本框,當在文本框中輸入文字莱预,點擊按鈕柠掂,使文字變成全部選中狀態(tài)。
帶文本框的對象.select()
全選函數(shù):eval能計算可運算的計算表達式的結果
var num =eval(1+2*3/4);


事件的擴展

onmousemove依沮;鼠標移動事件
onmousedown涯贞;鼠標按下事件
onmouseup;鼠標彈起事件
onkeydown危喉;//ev.keyCode獲取鍵盤碼

document.onkeydown=function(ev){
                var ev =ev||event;
                //ev.keyCode 獲取鍵盤碼
                alert(ev.keyCode);
            }

事件流

事件冒泡:所有的事件都具有穿透性,直到穿透到document(子級接收了一個事件宋渔,他的父級同樣接收這個事件),這種機制叫穿透冒泡.
通過event對象,阻止穿透ev.stopPropagation();

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>點按鈕圖片顯示,點空白圖片消失</title>
        <style type="text/css">
            #box{
                width: 100px;
                height: 100px;
                background: red;
                display: none;
            }
        </style>
    </head>
    <body>
        <p><button type="button">按鈕</button></p>
        <div id="box">
            
        </div>
        <script type="text/javascript">
            // 事件冒泡:
            //   所有的事件都具有穿透性,直到穿透到document(子級接收了一個事件辜限,他的父級同樣接收這個事件),這種機制叫穿透冒泡.
            document.getElementsByTagName('button')[0].onclick=function(ev){
                var ev =ev||event;
                document.getElementById('box').style.display='block';
                // 通過event對象,阻止穿透.
                ev.stopPropagation();
            }
            
            
            document.onclick=function(){
                document.getElementById('box').style.display='none';
            }
        </script>
    </body>
</html>

Event對象

當一個對象觸發(fā)一個事件時皇拣,事件function中設置形參event,event對象會返回描述該事件的所有信息。
代碼描述:當點擊空白窗口時氧急,觀察consle控制臺輸出了什么

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <!-- 
            觸發(fā)該事件的所有信息都會被記錄
         -->
        <script type="text/javascript">
            document.onclick=function(ev){
                var ev = ev||event;
                for(attr in ev){
                    console.log(attr+","+ev[attr])
                }
            }
        </script>
    </body>
</html>

js實現(xiàn)復制粘貼功能

// input與textarea可以直接使用這個方法颗胡。
let Url = document.getElementById("share_status1");
      Url.select();
      // 執(zhí)行瀏覽器復制命令用戶定義的代碼區(qū)域用戶定義的代碼區(qū)域(只對可編輯區(qū)域有效果,如 input ,textarea 標簽)
      document.execCommand("Copy");
// 這里是復制`<span></span>`中的代碼,與直接復制input中的不一樣吩坝,所以需要一個中轉毒姨,不可以與input的那種一樣
                let input = document.createElement('input');
                document.body.appendChild(input);
                let content = document.querySelector('#share_url').innerHTML;
                input.setAttribute('value', content);
                input.select();
                // #execCommand()這個方法,只對可編輯區(qū)域有效果,如 input ,textarea 標簽,
                document.body.removeChild(input);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市钉寝,隨后出現(xiàn)的幾起案子手素,更是在濱河造成了極大的恐慌,老刑警劉巖瘩蚪,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異稿黍,居然都是意外死亡疹瘦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門巡球,熙熙樓的掌柜王于貴愁眉苦臉地迎上來言沐,“玉大人,你說我怎么就攤上這事酣栈∠找龋” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵矿筝,是天一觀的道長起便。 經(jīng)常有香客問我,道長窖维,這世上最難降的妖魔是什么榆综? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮铸史,結果婚禮上鼻疮,老公的妹妹穿的比我還像新娘。我一直安慰自己琳轿,他們只是感情好判沟,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著崭篡,像睡著了一般挪哄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上琉闪,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天中燥,我揣著相機與錄音,去河邊找鬼塘偎。 笑死疗涉,一個胖子當著我的面吹牛拿霉,可吹牛的內容都是我干的。 我是一名探鬼主播咱扣,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼绽淘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了闹伪?” 一聲冷哼從身側響起沪铭,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎偏瓤,沒想到半個月后杀怠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡厅克,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年赔退,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片证舟。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡硕旗,死狀恐怖,靈堂內的尸體忽然破棺而出女责,到底是詐尸還是另有隱情漆枚,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布抵知,位于F島的核電站墙基,受9級特大地震影響,放射性物質發(fā)生泄漏刷喜。R本人自食惡果不足惜碘橘,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吱肌。 院中可真熱鬧痘拆,春花似錦、人聲如沸氮墨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽规揪。三九已至桥氏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間猛铅,已是汗流浹背字支。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人堕伪。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓揖庄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親欠雌。 傳聞我的和親對象是個殘疾皇子蹄梢,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內容

  • 簡述JavaScript起源起源于美國的Netscape公司,原名為LiveScript悠瞬,后改為JavaScrip...
    3ab670b99521閱讀 3,006評論 0 0
  • js簡介 Js是一種基于事件和對象驅動的解釋性们豌、松散性的語言。 一切皆對象 javascript 布蘭登艾奇 ...
    塔庫納瑪哈哈閱讀 1,222評論 0 2
  • JS使用技巧專題 1開發(fā)技巧 1.1函數(shù)使用 1.1.1函數(shù)聲明方式 JS函數(shù)的寫法總結 http://blog....
    Kevin_Junbaozi閱讀 1,090評論 0 11
  • 變量命名阁危、聲明、賦值 1.必須以字母汰瘫、下劃線或美元符號開頭狂打,后面可以跟字母、下劃線混弥、美元符號和數(shù)字趴乡。2.變量名區(qū)分...
    wq04200閱讀 633評論 0 1
  • 傲慢與偏見不會讓社會進步哀托,只有敢于擁抱改變和不確定惦辛,才能率先看到新世界的曙光。Stay humble仓手,stay f...
    這頭豬看起來生氣啦閱讀 4,537評論 0 0