JS基礎(chǔ)DOM一

事件

1.常見事件

  • onclick:點擊某個對象時調(diào)用
  • ondblclick:雙擊某個對象
  • onmouseover:鼠標移動到元素上
  • onmouseout:鼠標從某元素離開
  • onfocus:元素獲取焦點觸發(fā)
  • onblur:元素失去焦點觸發(fā)
  • oninput:文本輸入文字事件
  • onchange:文本的內(nèi)容被改變
  • onload:當頁面加載完畢的時候觸發(fā)(文本和圖片)
  • onkeydown:鍵盤按鈕被按下
  • onkeyup:鍵盤按鈕被松開

2.事件綁定

  • 行內(nèi)綁定
    <div id="box" onclick="fn()">
  • 帶名函數(shù)
         //帶名函數(shù)
        var div = document.getElementById("box");
        div.onclick = fn;
        function fn() {
          alert(123);
        }
  • 匿名函數(shù)
        //匿名函數(shù)
        var div = document.getElementById("box");
        div.onclick = function () {
         alert(123);
          div.style.width = "200px";
        };
        //頁面加載完畢的時候出發(fā)這個事件(文本和圖片)
        //整個頁面上所有的元素加載完成才會出發(fā)這個事件
        //window.onload可以預(yù)防使用標簽再定義標簽之前
        window.onload = function () {
          alert(1);
        }

3.節(jié)點訪問

節(jié)點的訪問關(guān)系是以屬性形式存在的

    <div class="box1">
        <div class="box3"></div>
        <div class="box2">
            <div class="box5"></div>
        </div>
        <div class="box4"></div>
    </div>
  • 節(jié)點訪問
    //獲取父節(jié)點
    var box2 = document.getElementsByClassName("box2")[0];
    console.log(box2.parentNode);//打印的是box1

    //兄弟節(jié)點

    //下一個兄弟節(jié)點
    console.log(box2.nextElementSibling || box2.nextSibling);//兼容寫法造虎,nextSibling只支持ie678
    //前一個兄弟節(jié)點
    console.log(box2.previousElementSibling || box2.previousSibling);


    //子節(jié)點
    console.log(box2.firstElementChild || box2.firstChild);//第一個子節(jié)點
    console.log(box2.lastElementChild || box2.lastChild);//最后一個子節(jié)點

    //所有子節(jié)點
    console.log(box2.parentNode.children);//正常返回
    console.log(box2.parentNode.childNodes);//把空格和換行也算成節(jié)點趟脂,所以里面有7個元素
  • 節(jié)點操作
    //創(chuàng)建節(jié)點
    var div1 = document.createElement("div1");
    var div2 = document.createElement("div2");

    //插入節(jié)點
    box2.parentNode.appendChild(div1);//在最后插入節(jié)點
    box2.parentNode.insertBefore(div2,div1);//兩個參數(shù)前一個是要插入的節(jié)點,第二個是要在哪個節(jié)點前插入

    //刪除節(jié)點
    div1.parentNode.removeChild(div1);//刪除節(jié)點甜紫,也算是把自己刪除了


    //克隆節(jié)點
    var div3 = div2.cloneNode(false);
   box2.parentNode.insertBefore(div3,div2);//參數(shù)是bool,true把所有子節(jié)點也復制了骂远,false只是復制一個節(jié)點

4.節(jié)點屬性

    <img src="" alt="" class="box" id="aaa" title="哈哈哈" width="200px" height="200px"/>
<button value="sss" >sssssss</button>
  //獲取屬性
  var img = document.getElementById("aaa");
  console.log(img.getAttribute("class")) ;
  console.log(img.title);
  console.log(img["width"]);

  //設(shè)置屬性
  img.setAttribute("title","ttttt");//可以設(shè)置沒有的屬性
  img.title = "哦哦哦";
  img["alt"] = "300";


//  重點:這三種方法不能交替使用囚霸,賦值和取值必須用同一種犯法

  //刪除屬性
  img.removeAttribute("width");

  // innerHTML:獲取雙閉合標簽里面的內(nèi)容(識別標簽)
  console.log(document.getElementsByTagName("button")[0].innerHTML);
  document.getElementsByTagName("button")[0].innerHTML = "<h1>我變大了嗎</h1>";

  // innerText:獲取雙閉合標簽里面的內(nèi)容(不識別標簽)
  console.log(document.getElementsByTagName("button")[0].innerText);
  document.getElementsByTagName("button")[0].innerText = "<h1>我變大了嗎</h1>"

5.節(jié)點類型

<div id="box">您好</div>
    var  div = document.getElementById("box");//獲取元素節(jié)點
    var att = div.getAttributeNode("id");//獲取屬性節(jié)點
    var  text = div.firstChild;//文本節(jié)點

    console.log(div);//div整體標簽
    console.log(att);//id = "box"
    console.log(text);
    //nodeType節(jié)點類型
    console.log(div.nodeType);//1元素節(jié)點
    console.log(att.nodeType);//2屬性節(jié)點
    console.log(text.nodeType);//3文本節(jié)點

     //nodeName節(jié)點名字
    console.log(div.nodeName);//div
    console.log(att.nodeName);//box
    console.log(text.nodeName);//#text

    //nodeValue屬性值
    console.log(div.nodeValue);//null,元素是沒有屬性值的
    console.log(att.nodeValue);//box
    console.log(text.nodeValue);//您好

6.表單屬性

  • 禁用文本框
<body>
賬號: <input type="text" id="acount"/><button>禁用</button><br/><br/>
密碼: <input type="password"/>
</body>


<script>
   var input = document.getElementById("acount");
   var btn = document.getElementsByTagName("button")[0];

    btn.onclick = function () {
      btn.innerHTML === "禁用" ? input.disabled = "no" : input.removeAttribute("disabled");//隨便寫字符串都行激才,只要不是空
      btn.innerHTML = btn.innerHTML === "禁用" ? "解禁" : "禁用";
    }
</script>
  • 文本獲取焦點
<body>
<div class="focus">
    京東:<input type="text"value="我是京東" id="input1"/><br/><br/>
    淘寶:<label for="input2">我是淘寶</label><input type="text" id="input2"/>
</div>
</body>


<script>
    var input_jd = document.getElementById("input1");
    var input_tb = document.getElementById("input2");

    //焦點觸發(fā)事件
    var jd_ph;
    input_jd.onfocus = function () {
      if (this.value = "我是京東"){
        jd_ph = this.value;
      }
      this.value = "";
    }
    //失去焦點觸發(fā)事件
    input_jd.onblur = function () {
      this.value = jd_ph;
    }


    //文字的輸入事件
    input_tb.oninput = function () {
      var label = input_tb.parentNode.children[3];
      label.style.display = this.value === "" ? "block" : "none";
    }

    //直接獲取焦點
    input_tb.focus();//一加載完成就會獲取焦點
</script>
  • 登錄注冊高亮顯示
<style type="text/css">
        .error {
            border: 1px solid red;
        }
        .right {
            border: 1px solid green;
        }
</style>
<body>
<div>
    賬號:<input type="text" onblur="jude(this)"/><br/><br/>
    密碼:<input type="password" onblur="jude(this)"/>
</div>
</body>


<script>
    function jude(inp) {
      //this代指的不是input拓型,而是window,所以要把input傳遞進來
      console.log(this);
      if (inp.value.length < 6 || inp.value.length > 12){
            inp.className = "error";
      }else {
            inp.className = "right";
      }
    }
</script>
  • select屬性
<body>
<div>
    <button id="sel">識別水產(chǎn)</button>
    <br/><br/>
    <select name="" id="">
        <option value="0">香蕉</option>
        <option value="1">蘋果</option>
        <option value="2">鴨梨</option>
        <option value="3">鯉魚</option>
    </select>
</div>
</body>


<script>
    var sel_btn = document.getElementById("sel");
    var opt = document.getElementsByTagName("option")[3];
    sel_btn.onclick = function () {
      //選擇鯉魚
      opt.selected = "true";
    }
</script>
  • 單選框全選
<body>
    <table>
        <thead>
            <tr>
                <th>
                    <input type="checkbox"/>
                </th>
                <th>菜名</th>
                <th>飯店</th>
            </tr>
        </thead>
        <tbody>
        <tr>
            <td><input type="checkbox"/>
            </td>
            <td>地三鮮</td>
            <td>田老師</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox"/>
            </td>
            <td>西紅柿炒雞蛋</td>
            <td>田老師</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox"/>
            </td>
            <td>醋溜土豆絲</td>
            <td>田老師</td>
        </tr>
        <tr>
            <td>
                <input type="checkbox"/>
            </td>
            <td>蘿卜干炒黃豆兒</td>
            <td>田老師</td>
        </tr>
        </tbody>
    </table>
</body>
<script>
    //獲取input標簽
    var titleInput = document.getElementsByTagName("th")[0].children[0];
    var inputArray = document.getElementsByTagName("tbody")[0].getElementsByTagName("input");

    titleInput.onclick = function () {
        for (var i = 0;i < inputArray.length;i++){
          inputArray[i].checked = this.checked;
        }
    }


    for (var i = 0;i < inputArray.length;i++){
      inputArray[i].onclick = selFn;
    }

    function selFn() {
//        var bool = inputArray.every(function (item,index,array) {
//           return item.checked;
//        });//偽數(shù)組沒有數(shù)組的一些遍歷方法
      var bool = true;
      for (var i = 0;i < inputArray.length;i++){
        if (!inputArray[i].checked){
          bool = false;
          break;
        }
      }
        titleInput.checked = bool;
    }
</script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贸营,一起剝皮案震驚了整個濱河市吨述,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钞脂,老刑警劉巖揣云,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異冰啃,居然都是意外死亡邓夕,警方通過查閱死者的電腦和手機刘莹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來焚刚,“玉大人点弯,你說我怎么就攤上這事】蠊荆” “怎么了抢肛?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碳柱。 經(jīng)常有香客問我捡絮,道長,這世上最難降的妖魔是什么莲镣? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任福稳,我火速辦了婚禮,結(jié)果婚禮上瑞侮,老公的妹妹穿的比我還像新娘的圆。我一直安慰自己,他們只是感情好半火,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布越妈。 她就那樣靜靜地躺著,像睡著了一般慈缔。 火紅的嫁衣襯著肌膚如雪叮称。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天藐鹤,我揣著相機與錄音瓤檐,去河邊找鬼。 笑死娱节,一個胖子當著我的面吹牛挠蛉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肄满,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谴古,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了稠歉?” 一聲冷哼從身側(cè)響起掰担,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎怒炸,沒想到半個月后带饱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年勺疼,在試婚紗的時候發(fā)現(xiàn)自己被綠了教寂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡执庐,死狀恐怖酪耕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情轨淌,我是刑警寧澤迂烁,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站猿诸,受9級特大地震影響婚被,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜梳虽,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望灾茁。 院中可真熱鬧窜觉,春花似錦、人聲如沸北专。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拓颓。三九已至语婴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間驶睦,已是汗流浹背砰左。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留场航,地道東北人缠导。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像溉痢,于是被迫代替她去往敵國和親僻造。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

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

  • (續(xù)jQuery基礎(chǔ)(1)) 第5章 DOM節(jié)點的復制與替換 (1)DOM拷貝clone() 克隆節(jié)點是DOM的常...
    凜0_0閱讀 1,336評論 0 8
  • 第1章 鼠標事件 1-1 jQuery鼠標事件之click與dbclick事件 用交互操作中孩饼,最簡單直接的操作就是...
    mo默22閱讀 1,275評論 0 6
  • 總結(jié): 鼠標事件 1.click與dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r閱讀 1,605評論 2 10
  • 事件流 IE和Netscape開發(fā)團隊提出了完全相反的兩種事件流的概念髓削,事件冒泡流和事件捕獲流。 事件冒泡 事件由...
    exialym閱讀 935評論 0 9
  • 1 Claude Monet, I papaveri 莫奈:《亞嘉杜的罌粟花田》 Uno degli oli su...
    全歐小語種閱讀 542評論 0 0