JS中的DOM對象及JS對document對像的操作


DOM對象

  windows:屬性:opener(打開者)

          方法:open()、close(),setTimeout()、setInterval()...

   location:屬性:href

        方法:reload()刷新

   history:方法:go()

   status:不常用

   document:下面詳細介紹

JS對document對像的操作

  分兩個: 找到對象、操作對象。

  找到對象的方法:document.getElementById()、document.getElementsByName()、

          document.getElementsByTagName(),//通過元素名找到結果是數組,elements加s了

          document.getElementsByClassName()

    PS:this關鍵字的用法,指這條元素,省去了document.的方法找元素了

      例如給按鈕創建單擊事件 onclick="doout(this)"  方法:function dout(tx){tx.屬性等}

  操作對象:包括:

    操作屬性:取值:getAttribute,賦值:setAttribute,刪除屬性:remoeAttribute

    操作樣式:內聯樣式:style.xxxx

          class:1、className

              2、把class當成屬性來看

     操作內容:表單元素:value

          非表單元素:1、innerHTML

                2、innerText

    操作元素:操作整個元素:創建(字符串、createElement())、添加子元素(appendChild())、刪除(remover())、復制(clonNode())

          操作相關元素:前后、父、子

 

演示open()、close()的用法

<script language="javascript">

  //打開b網頁,a接收的就是b的windows

  var a = window.open("b.html","_blank","width=100 height=100 toolbar=no");

  window.setTimeout("ccc()",3000);//間隔3秒執行ccc()方法

  function ccc()
  {
    a.close();//關閉a對象的窗口
  }

 

</script>

 

演示opner()的用法

 

<script language="javascript">
function dodo(){
  //取出值
  var s = document.getElementById("t1").value;
  //給父窗口
  var dd = window.opener.document.getElementById("dd");   //在上一級的窗口找到 id為 dd 的元素
  dd.innerHTML = s;                      //賦值
}
</script>

body內的內容

<form>
<input type="text" id="t1" name="t1">
<input type="button" value="點擊給父窗口" onclick="dodo()">
</form>

 

連續打開和連續關閉窗口

<script language="javascript">

  var arr = new Array();//用來接受窗口

  function doopen(){  //連續打開窗口

    for(var i=1;i<=5;i++){
      arr[i-1] = window.open("b.html","_blank","width=100 height=100       toolbar=no");
    }
  }  

  function doclose(){  //連續關閉窗口

    for(var i=0;i<arr.length;i++){
      arr[i].close();
    }
  }

</script>

body里面方法調用

<span onClick="doopen()">打開5個子窗口</span>
<span class="d2" onclick="doclose()">關閉5個子窗口</span>
<span onclick="doredirect()">轉到新浪網</span>

<div>

location的href屬性和reload()刷新方法

<script language="javascript">

  function doredirect(){

    //跳轉操作

    window.location.href="http://www.sina.com.cn"; 

    //頁面刷新操作
    // window.location.reload();
  }

</script>

body里面方法調用

<span onclick="doredirect()">轉到新浪網</span>

document方法找到元素,並操作屬性

<script language="javascript">

  function yx(){

    //把disabled="disabled"去掉
    var btn = document.getElementById("b3");
    btn.removeAttribute("disabled");
  }
  function byx(){
    //加上disabled="disabled"
    var btn = document.getElementById("b3");
    btn.setAttribute("disabled","disabled");
  }

</script>

body里面元素方法調用

<form>
<input disabled="disabled" type="submit" value="下一步" name="b3" id="b3"><br>
<input type="radio" name="r1" id="r1"  onclick="yx()">同意
<input type ="radio" name="r1" id="r2" checked="checked" onclick="byx()">不同意
</form>

通過操作屬性,給元素加上單機事件實現按鈕的可用不可用

<script language="javascript">

  var a = document.getElementsByName("r1"); //找到元素名為 ri 的元素集合
  for(var i=0;i<a.length;i++){
    a[i].setAttribute("onclick","bbb(this)");  //for循環給每個元素添加單機事件,注意this的使用
    //a[i].setAttribute("type","checkbox");  //設置表單元素
  }

  function bbb(dxan){
    if(dxan.getAttribute("id") == "r1"){
    document.getElementById("b3").removeAttribute("disabled");
    }
    else if(dxan.getAttribute("id") == "r2"){
      document.getElementById("b3").setAttribute("disabled","disabled");
    }
  }

</script>

body里面元素方法調用

<form>
  <input disabled="disabled" type="submit" value="下一步" name="b3" id="b3"><br>
  <input type="radio" name="r1" id="r1" >同意
  <input type ="radio" name="r1" id="r2" checked="checked">不同意
</form>

 

通過操作樣式,給元素加上事件實現元素樣式的改變

<style type="text/css">
.dd{
  width:100px;
  height:100px;
  border:5px solid red;
  float:left;
  margin:10px;
}
.tt{
  background-color:yellow;
}
</style>

<script language="javascript">

  var dd = document.getElementsByClassName("dd");
  for(var i=0;i<dd.length;i++){
  //dd[i].className+=" tt";
  var s = dd[i].getAttribute("class");               //獲取屬性值
  s = s+" tt";
  dd[i].setAttribute("class",s);                  //設置屬性值
  //加上鼠標移動效果
  dd[i].setAttribute("onmouseover","doOver(this)");
  dd[i].setAttribute("onmouseout","doOut(this)");
  }

  function doOver(d){
    var s = d.className;
    var ks = s.indexOf(" ");
    if(ks > 0){
      s = s.substr(0,ks);                  //字符串截取
      d.className=s;
    }
  }
  function doOut(d){
    var s = d.className;
    var ks = s.indexOf("tt");
    if(ks < 0){
      d.className = d.className+" tt";          //字符串拼接
    }
  }

</script>

<div class="dd"></div>
<div class="dd"></div>

 

通過操作內容,改變元素的內容

<script language="javascript">
  function doinput(txt){
    var s = txt.value;                        //表單元素內容用value,方法加this參數,方法內不用通過document再找了
    var n = s.length;
    var shengyu = 140-n;
    document.getElementById("dd").innerHTML = shengyu;    //非表單內容用innerHTML
  }
</script>

<form>
<textarea rows="5" onkeyup="doinput(this)" cols="60" id="t1">
</textarea><br>
還可以輸入<span id="dd">140</span>個字
</form>

 

實現時鍾效果

<script language="javascript">
  function showShiJian(){
    var d = new Date();
    var s = d.getHours()+":";
    s += d.getMinutes()+":";
    s += d.getSeconds();
    document.getElementById("dd").innerHTML = s;
    window.setTimeout("showShiJian()",1000);
  }
  window.setTimeout("showShiJian()",1000);
</script>

<div id="dd" style="font-size:28px; font-weight:bold;"></div>

操作元素,創建等

<style type="text/css">
.bbb{                              //按鈕樣式
  width:50px;height:50px;
  font-size:24px;
  font-weight:bold;
  font-style:italic;
  margin:3px;
}
.selspan{                            //span元素樣式
  color:red;
  font-weight:bold;
  font-size:18px;
  margin:0px 10px 0px 10px;
}
</style>

<script language="javascript">

  var selectcount=0;                                     //計數,只能選7個
  for(var i=1;i<=36;i++){
    /*var s = "<input type='button' value='"+i+"' class='bbb' onclick='doselect(this)'>"  //第一種字符串創建方式
    var dd = document.getElementById("dd");
    dd.innerHTML += s;*/
create
  var ab = document.createElement("input");                        //第二中createElenment創建方式
  ab.setAttribute("type","button");
  ab.setAttribute("value",i);
  ab.setAttribute("class","bbb");
  ab.setAttribute("onclick","doselect(this)");

  var dd = document.getElementById("dd");            //往 id 為dd 的元素中添加創建的元素
  dd.appendChild(ab); 
  }
  function doselect(btn){                      //實現選數功能
    selectcount++;
    if(selectcount>7){                      //只能選7個
      alert("asdfasf");
      return;
    }
  var s = btn.value; //按鈕上的文字
  var ss = document.getElementById("ss");

  var span = "<span class='selspan' ondblclick='delnum(this)'>"+s+"</span>"  //創建元素
  ss.innerHTML += span;                            //添加元素

  btn.setAttribute("disabled","disabled");           //更改按鈕屬性,方法用了this所以btn相當於document.getElementBy...
  }                              //方法調用處<input type='button' value='"+i+"' class='bbb' onclick='doselect(this)'>
  function delnum(snum){                    //刪除已選數字,需要改變已選數字樣式,改變計數
    var num = snum.innerHTML;
    //找對應的按鈕,設為可用
    var btns = document.getElementsByClassName("bbb");
    for(var i=0;i<btns.length;i++){
      var btnnum = btns[i].value;
      if(btnnum == num)    {
        btns[i].removeAttribute("disabled");
        break;
      }
    }

  //刪除這個span
  snum.remove();
  selectcount--;
  }
</script>

<form>
<div id="dd"></div>

</form>
<br>
您選中的號碼有:
<span id="ss"></span>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM