JS基礎(chǔ)DOM二

style屬性


    <style type="text/css">
        .box{
            position: absolute;
            z-index: 1;/*元素層級,只能在絕對定位元素上生效*/
        }
    </style>
    <script>
    var  box = document.getElementsByClassName("box")[0];

    //style只能和行內(nèi)樣式進行交互光涂,命名規(guī)則是駝峰,值都是字符串
    document.getElementsByTagName("button")[0].onclick = function () {
      box.style.backgroundColor = (box.style.backgroundColor === "red" ? "rebeccapurple" : "red");
    };
    //cssText:字符串形式的樣式,把行內(nèi)樣式按照字符串輸出
    console.log(box.style.cssText);//"width: 100px;background-color: rebeccapurple; height: 100px;"
    //設(shè)置
    box.style.cssText = "width: 100px;background-color: rebeccapurple; height: 100px;"
    </script>

DOM元素的創(chuàng)建方式總結(jié)

第一種創(chuàng)建方式民褂,document.write,可以識別標(biāo)簽,在script中寫html和css,跟script寫的位置有關(guān)系。script寫哪就創(chuàng)建在哪弧关,不常用,容易覆蓋原來的頁面

document.write("<li>我是document.write創(chuàng)建的</li>");

第二種innerHTML,也可以識別標(biāo)簽,用的比較多唤锉,綁定屬性和內(nèi)容比較方便,節(jié)點嵌套創(chuàng)建用它比較方便

  var li3 = document.getElementsByTagName("li")[0];
  li3.innerHTML += "<li>我是innerHTML創(chuàng)建的</li>";

第三種:利用domAPI創(chuàng)建元素梯醒,也是用的比較多的,創(chuàng)建指定數(shù)量的時候一般用它

  var li4 = document.createElement("li");
  li4.innerHTML = "我是createElement創(chuàng)建出來的";
  //在父元素的最后添加
  li3.appendChild(li4);
  //指定位置添加
  var li5 = li4.cloneNode(false);
  li5.innerHTML = "我是cloneNode創(chuàng)建出來的"
  li3.insertBefore(li5,li4);//插入到哪個元素的前面

window對象

window是BOM的頂級對象腌紧,通常情況下可以省略

    window.alert("11");
    window.prompt("111");
    
    //成員變量也是window的屬性
    var  aa = "1";
    console.log(aa === window.aa);

    //自定義函數(shù)也是window的一個方法
    function aaa() {
      console.log("111");
    }
    window.aaa();

open,close

    //window.open(地址茸习,是否開新窗口,新窗口參數(shù))
    var a1 = document.getElementsByTagName("a")[0];
    var a2 = document.getElementsByTagName("a")[1];
    a1.onclick = function () {
      var json = {"name":"helloworld","fullscreen":"no","location":"no","width":"100px","height":"100px","top":"100px","left":"100px"};
      window.open("http://www.jd.com","_self",json);

//        featurse:屬性控制字符串壁肋,在此控制窗口的各種屬性号胚,屬性之間以逗號隔開。
//        fullscreen= { yes/no/1/0 } 是否全屏浸遗,默認(rèn)no
//        channelmode= { yes/no/1/0 } 是否顯示頻道欄猫胁,默認(rèn)no
//        toolbar= { yes/no/1/0 } 是否顯示工具條,默認(rèn)no
//        location= { yes/no/1/0 } 是否顯示地址欄跛锌,默認(rèn)no
//        directories = { yes/no/1/0 } 是否顯示轉(zhuǎn)向按鈕弃秆,默認(rèn)no
//        status= { yes/no/1/0 } 是否顯示窗口狀態(tài)條,默認(rèn)no
//        menubar= { yes/no/1/0 } 是否顯示菜單髓帽,默認(rèn)no
//        scrollbars= { yes/no/1/0 } 是否顯示滾動條菠赚,默認(rèn)yes
//        resizable= { yes/no/1/0 } 是否窗口可調(diào)整大小,默認(rèn)no
//        width=number 窗口寬度(像素單位)
//        height=number 窗口高度(像素單位)
//        top=number 窗口離屏幕頂部距離(像素單位)
//        left=number 窗口離屏幕左邊距離(像素單位)
    }
    //window.close關(guān)閉當(dāng)前頁面
    a2.onclick = function () {
      window.close();
    }

location

    //location,做頁面跳轉(zhuǎn)
    var div = document.getElementsByTagName("div")[0];
    div.onclick = function () {
      location.;
    }

//    console.log(location.href    )    //
//    console.log(location.hash    )    //    返回url中#后面的內(nèi)容郑藏,包含#
//    console.log(location.host    )    // 主機名衡查,包括端口
//    console.log(location.hostname)    // 主機名
//    console.log(location.pathname)    // url中的路徑部分
//    console.log(location.protocol)    // 協(xié)議 一般是http、https
//    console.log(location.search   )     // 查詢字符串

navigator

    //navigator
    console.log(navigator.userAgent);//瀏覽器支持的系統(tǒng)
    console.log(navigator.platform);//系統(tǒng)

history

    //history,歷史記錄管理
    history.go(1);//前進   history.forwardo()也是前進
    history.go(-1);//后退  history.back()也是回退
    history.go(0);//刷新

定時器

setInterval,循環(huán)定時器必盖,周而復(fù)始的執(zhí)行
setTimeout拌牲,炸彈定時器,用完以后立即報廢歌粥,只執(zhí)行一次

定義方法

    var a = 0;
    //定義方法1匿名函數(shù)塌忽,一般情況下都用這個
    setInterval(function () {
      console.log(a++);
    },1000);

    //定義方法2函數(shù)名
    setInterval(aaa,1000);
    function aaa() {
      console.log(1);
    }

    //定義方法3
    setInterval("sss(111)",1000);
    function sss(ssss) {
      console.log(ssss);
    }

銷毀定時器

    //setInterval的返回值就是定時器的名字
    var num = 1;
    var timer = null;
    time = setInterval(function () {
      console.log(num++);
      if (num > 10) {
        clearInterval(timer);
      }
    },500);

綁定事件的第二種方法

第一種綁定事件的方法,當(dāng)事件被重復(fù)綁定的時候失驶,會被覆蓋掉

    var  button = document.getElementsByTagName("button")[0];

    //onclick事件綁定會被覆蓋掉
    button.onclick = function () {
      console.log("12345");
    }
    button.onclick = function () {
      console.log("67890");
    }

事件綁定第二種方法:事件監(jiān)聽器,原事件被執(zhí)行的時候土居,后面的事件照樣被執(zhí)行,不會被覆蓋(更適合團隊開發(fā))

    //1.事件源去調(diào)用
    //2.參數(shù)1是不帶on的觸發(fā)事件
    //3.參數(shù)2是事件名(執(zhí)行函數(shù))
    //4.參數(shù)3是事件名(捕獲或者冒泡)

    button.addEventListener("click",fn1);
    button.addEventListener("click",fn2);
    button.addEventListener("click",fn3);
    function fn1() {
      console.log("12345");
    }
    function fn2()  {
      console.log("67890");
    }
    function fn3()  {
      console.log("123456789");
    }

addEventListener實現(xiàn)原理

  /**
     *
     * @param type 事件名
     * @param fn 執(zhí)行函數(shù)
     * @param element 給哪個元素綁定
     */
    function customAddEventListener(type,fn,element) {

      var str = "on" + type;
      //執(zhí)行方法的時候就先判斷事件是否被綁定完,然后在去綁定装盯,就能判斷之前的事件是否被綁定過
      var oldEvent = element[str];
      element[str] = function () {
        //不能直接調(diào)用坷虑,因為還不知道這個元素之前還有沒有綁定同樣的事件
        //進行判斷,如果有就先把之前的執(zhí)行完再執(zhí)行埂奈,如果沒有接直接執(zhí)行
        //如果沒有被定義過事件該事件源的該事件屬性應(yīng)該是null對應(yīng)的boolean值是false
        //如果已經(jīng)定義過事件該事件源的該事件屬性應(yīng)該是function本身對應(yīng)的boolean值是true
        if (oldEvent) {
            oldEvent();
        }
        fn();
      };
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末迄损,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子账磺,更是在濱河造成了極大的恐慌芹敌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件垮抗,死亡現(xiàn)場離奇詭異氏捞,居然都是意外死亡,警方通過查閱死者的電腦和手機冒版,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門液茎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辞嗡,你說我怎么就攤上這事捆等。” “怎么了续室?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵栋烤,是天一觀的道長。 經(jīng)常有香客問我挺狰,道長明郭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任丰泊,我火速辦了婚禮薯定,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘趁耗。我一直安慰自己沉唠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布苛败。 她就那樣靜靜地躺著,像睡著了一般径簿。 火紅的嫁衣襯著肌膚如雪罢屈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天篇亭,我揣著相機與錄音缠捌,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛曼月,可吹牛的內(nèi)容都是我干的谊却。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼哑芹,長吁一口氣:“原來是場噩夢啊……” “哼炎辨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起聪姿,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤碴萧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后末购,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體破喻,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年盟榴,在試婚紗的時候發(fā)現(xiàn)自己被綠了曹质。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡擎场,死狀恐怖咆繁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情顶籽,我是刑警寧澤玩般,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站礼饱,受9級特大地震影響坏为,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜镊绪,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一匀伏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蝴韭,春花似錦够颠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至庆尘,卻和暖如春剃诅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背驶忌。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工矛辕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓聊品,卻偏偏與公主長得像飞蹂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子翻屈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理陈哑,服務(wù)發(fā)現(xiàn),斷路器妖胀,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 1.幾種基本數(shù)據(jù)類型?復(fù)雜數(shù)據(jù)類型?值類型和引用數(shù)據(jù)類型?堆棧數(shù)據(jù)結(jié)構(gòu)? 基本數(shù)據(jù)類型:Undefined芥颈、Nul...
    極樂君閱讀 5,502評論 0 106
  • “哥哥,你倆為啥罰站呀赚抡?”“( ′^` )因為上課睡覺爬坑,那你呢?因為啥涂臣?”“( ??ε?? )因為上幼兒園不睡覺盾计。...
    唐緣不是湯圓兒閱讀 240評論 1 0
  • 文/瑪嗒嗒 圖/網(wǎng)絡(luò) 相信很多人最近都被被兇巴巴的陳小春和他兒子Jasper狠狠圈粉署辉。 隨著年齡漸長,很少看綜藝了...
    瑪嗒嗒閱讀 2,187評論 16 42
  • 早上六點十分接機的車就到了岩四,本以為到了機場會苦等兩小時哭尝,結(jié)果旅途,拿票剖煌,托運材鹦,安檢,時間被分匹之后耕姊,沒有那么難耐桶唐。...
    冠世墨玉yanzi閱讀 369評論 1 3