zoukankan      html  css  js  c++  java
  • 网站开发综合技术 三 JavaScript的DOM操作

    第3部分 JavaScript的DOM操作

    1、DOM的基本概念

    DOM是文档对象模型,这种模型为树模型;文档是指标签文档;对象是指文档中每个元素;模型是指抽象化的东西。

    2、Windows对象操作

    一、属性和方法:

    属性(值或者子对象):

    opener:打开当前窗口的源窗口,如果当前窗口是首次启动浏览器打开的,则opener是null。

    dialogArgument:对话框返回值。

    子对象:history,location,document,status,menubar,toolbar等。

    方法(函数):事件(事先设置好的程序,被触发)。

    二、Window.open("第一部分","第二部分","第三部分","第四部分")

    Window.open的特征参数:

    第一部分:写页面地址。

    第二部分:_blank 打开的方式,在新窗口还是自身的窗口。

    第三部分:控制打开的窗口格式,可以写多个,用空格隔开如下:

              toolbar=no新打开的窗口无工具条 ;

              menubar=no无菜单栏 status=no无状态栏 ;

              width=100 height=100 宽度高度;

              left=100 打开的窗口距离左边多少距离;

              resizable=no窗口大小不可调 ;

              scrollbars=yes 出现滚动条;

              location=yes 有地址栏;

    Window.open也有返回值,它的返回值是:新打开的窗口对象。

    例如:

    最简单的打开窗口:window.open("Untitled-6.html");

    打开一个窗口并保存在变量中:var w= window.open();

    可以将打开的多个窗口保存在数组w里:

    function openW()

    {

    w[i++]=window.open();

    }

    三、window.close():关闭当前窗口;

    w.close():关闭保存在变量w中的那个窗口;

    关闭多个子窗口:先将打开的窗口存入数组内,利用循环将其挨个关闭;

    关闭打开当前窗口的源窗口: window.opener.close();

    四、间隔与延迟

    间隔执行一段代码(函数):window.setInterval("要执行的代码",间隔的毫秒数)

    清除间隔执行:window.clearInterval(间隔的id); 循环一次之后用来清除间隔执行的代码

    延迟一段时间执行某一段代码(函数):window.setTimeout("要执行的代码",延迟的毫秒数)

    清除延迟:window.clearTimeout(延迟的id);清除setTimeout

    五、调整页面

    window.navigate("url") 跳转至目标页面,在谷歌浏览器下有bug;

    window.moveTo(x,y) 移动页面至某一位置,位置由x和y决定;

    window.resizeTo(宽,高) 调整页面的宽度和高度;

    window.scrollTo(x,y)滚动页面至哪里,y代表纵向滚动。

    六、模态对话框和非模态对话框

    模态对话框(Modal Dialogue Box),是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭,它和非模态对话框都是永远置顶的,它们的区别在于当对话框打开时,是否允许用户进行其他对象的操作。

    打开模态对话框:window.showModalDialog("url","向目标对话框传的值","窗口特征参数");

    特征参数:用分号隔开,像素大小用px。dialogHeight,dialogWidth,center,等

    打开非模态对话框:window.showModelessDialog("url","向目标对话框传的值","窗口特征参数")

    var a = window.dialogArgument;可以用一个参数来获取模态或非模态对话框传递的值。

     

    3、Window.history对象

    window.history.back();页面进行后退;

    window.history.forward();页面前进;

    window.history.go(n); n如果是正数则代表前进n个页面,n如果是负数则代表后退n个页面,一般常用这一种。

     

    4、Window.location对象

    location地址栏

    var s = window.location.href;获取当前页面的地址

    window.location.href="http://www.baidu.com";修改页面地址,会跳转页面

    window.location.hostname: 主机名,域名,网站名,可用变量接收

    window.location.pathname: 路径名,可用变量接收

     

    5、Window.status对象

    status状态栏,可以给状态栏添加要显示的文字

    window.status="要在状态栏显示的内容";设置状态栏文字

    例如:

    function s()
    {
        window.status = "向前走 就这么走";
    }
     

    6、Window.document对象

    一、找到元素

        docunment.getElementById("id");根据id找,最多找一个;
        var a =docunment.getElementById("id");将找到的元素放在变量中;
        docunment.getElementByName("name");根据name找,找出来的是数组;
        docunment.getElementByTagName("name");根据标签名找,找出来的是数组;
        docunment.getElementByClassName("name") 根据classname找,找出来的是数组;

    二、操作内容:

     1. 非表单元素:

    1)获取内容:

    alert(a.innerHTML);标签里的html代码和文字都获取了

    如:body中有这么一个div:

    <div id="me"><b>试试吧</b></div>

    在script中用innerHTML获取div中的内容:

        var a= document.getElementById("me");
        alert(a.innerHTML);

    结果如下图:

     

    alert(a.innerText);只取里面的文字
        alert(a.outHTML);包括标签本身的内容(简单了解)

    2)设置内容:

    a.innerHTML = "<font color=red >hello world </font>";

    如果用设置内容代码结果如下,div中的内容被替换了:

     

     

    a.innerText会将赋的东西原样呈现

    清空内容:赋值个空字符串

    2. 表单元素:

    1)获取内容,有两种获取方式:

    var t = document.f1.t1; form表单ID为f1里面的ID为t1的input;
        var t = document.getElementById("id"); 直接用ID获取。

    alert(t.value); 获取input中的value值;
        alert(t.innerHTML); 获取<textarea> 这里的值 </textarea>;

    2)设置内容: t.value="内容改变";

    3. 一个小知识点:

    <a href="www.baidu.com" onclick ="return flase">转向百度</a> ;加了return flase则不会跳转,默认是return true会跳转。按钮也一样,如果按钮中设置return flase 则不会进行提交,利用这个可以对提交跳转进行控制。

    三、操作属性

    首先利用元素的ID找到该元素,存于一个变量中:

    var a = document.getElementById("id");

    然后可以对该元素的属性进行操作:

    a.setAttribute("属性名","属性值"); 设置一个属性,添加或更改都可以;

    a.getAttribute("属性名");获取属性的值;

    a.removeAttribute("属性名");移除一个属性。

    例子1:做一个问题,如果输入的答案正确则弹出正确,错误弹出错误;

    这里在text里面写了一个daan属性,里面存了答案的值,点击检查答案的时候cheak输入的内容和答案是否一样:

    Body中代码:

    <form>中华民国成立于哪一年?<input type="text" daan="1912年" value="" id="t1" name="t1" /><input type="button" onclick="check()" id="t2" name="t2" value="检查答案" /></form>

    JS中的代码:

    function check()
    {
        var a=document.getElementById("t1");
        var a1=a.value;
        var a2=a.getAttribute("daan");
        if(a1==a2)
        {
            alert("恭喜你答对了!");
        }
        else
        {
            alert("笨蛋!");
        }
    }

    回答正确时的结果:

     

    例子2: 同意按钮,倒计时10秒,同意按钮变为可提交的,这里用了操作属性:disable,来改变按钮的状态,当disable=”disable”时按钮不可用。

    body中的代码:

    <form><input type="submit" id="b1" name="b1" value="同意(9)" disabled="disabled" /></form>

    JS中的代码:

    var n=10;var a= document.getElementById("b1");function bian()
    {
        n--;
        if(n==0)
        {
            a.removeAttribute("disabled");
            a.value="同意";
            return;
        }
        else
        {
            a.value= "同意("+n+")";
            window.setTimeout("bian()",1000);
        }
    }
    window.setTimeout("bian()",1000);

    运行的结果:

     

    四、操作样式

    首先利用元素的ID找到该元素,存于一个变量中:

    var a = document.getElementById("id");

    然后可以对该元素的属性进行操作:

    a.style.样式="" ; 操作此ID样式的属性。

    样式为CSS中的样式,所有的样式都可以用代码进行操作。

    document.body.stye.backgroundColor="颜色"; 整个窗口的背景色。

    操作样式的class:a.className="样式表中的classname" 操作一批样式

    例子1:展示图片的自动和手动切换;

    Body中的代码,做一个有背景图片的div和两侧的控制对象:

     </div>
                <div id="tuijian" style=" background-image:url(imges/tj1.jpg);">
                <div class="pages" id="p1" onclick="dodo(-1)"></div>
                <div class="pages" id="p2" onclick="dodo(1)"></div>
            </div>

    样式表中的代码:

    <style type="text/css">
    *{
        margin:0px auto;
        padding:0px;
        font-family:"微软雅黑";
    }
    #tuijian{
        760px;
        height:350px;
        background-repeat:no-repeat;
    }
    .pages{
        top:200px;
        background-color:#000;
        background-position:center;
        background-repeat:no-repeat;
        opacity: 0.4;
         30px;
        height:60px;
        
    }
    #p1{
        background-image:url(imges/prev.png);
        float:left;
        margin:150px 0px 0px 10px;
        
    }
    #p2{
        background-image:url(imges/next.png);
        float:right;
        margin:150px 10px 0px 0px;
    }
    </style>

    JS中的代码,这里主要是每隔3秒中调用一下huan()函数,来将背景图片的样式修改,在点击左右切换的时候变为手动切换,自动切换停止:

    <script language="javascript">var jpg =new Array();
    jpg[0]="url(imges/tj1.jpg)";
    jpg[1]="url(imges/tj2.jpg)";
    jpg[2]="url(imges/tj3.jpg)";var tjimg = document.getElementById("tuijian");var xb=0;var n=0;
    function huan()
    {
        xb++;
        if(xb == jpg.length)
        {
            xb=0;
        }
        
        tjimg.style.backgroundImage=jpg[xb];
        if(n==0)
        {
        var id = window.setTimeout("huan()",3000);
        }
        
        
    }function dodo(m)
    {   
        n=1;
        xb = xb+m;
        if(xb < 0)
        {
            xb = jpg.length-1;
        }
        else if(xb >= jpg.length)
        {
            xb = 0;
        }
        tjimg.style.backgroundImage=jpg[xb];
    }
    window.setTimeout("huan()",3000);</script>

    效果如下图:

     

    五、相关元素操作:

    var a = document.getElementById("id");找到a;

    var b = a.nextSibling,找a的下一个同辈元素,注意包含空格;

    var b = a.previousSibling,找a的上一个同辈元素,注意包含空格;

    var b = a.parentNode,找a的上一级父级元素;

    var b = a.childNodes,找出来的是数组,找a的下一级子元素;

    var b = a.firstChild,第一个子元素,lastChild最后一个,childNodes[n]找第几个;

    alert(nodes[i] instanceof Text); 判断是不是文本,是返回true,不是返回flase,用if判断它的值是不是flase,可以去除空格。

     

    六、元素的创建、添加、删除:

    var a = document.getElementById("id");找到a;

    var obj = document.createElement("标签名");创建一个元素 obj.innerHTML = "hello world";添加的时候首先需要创建出一个元素。

    a.appendChild(obj);向a中添加一个子元素。

    a.removeChild(obj);删除一个子元素。

    列表中a.selectIndex:选中的是第几个;a.options[a.selectIndex]按下标取出第几个option对象

    七、字符串的操作:

    var s = new String(); 或var s ="aaaa";

    var s = "hello world";

    alert(s.toLowerCase());转小写 toUpperCase() 转大写

    alert(s.substring(3,8));从第三个位置截取到第八个位置

    alert(s.substr(3,8));从第三个位置开始截取,截取八个字符长度,不写后面的数字是截到最后.

    s.split('');将字符换按照指定的字符拆开

    s.length是属性

    s.indexOf("world");world在字符串中第一次出现的位置,没有返回-1

    s.lastIndexOf("o");o在字符串中最后一次出现的位置

    八、日期时间的操作

    var d = new Date();当前时间

    var d = new Date(1999,3,2);定义一个时间,1999年4月2日,3要加1

    d.getFullYear:取年份; d.getMonth():取月份,取出来的少1; d.getDate():取天; d.getDay():取星期几

    d.getHours():取小时; d.getMinutes():取分钟;d.getSeconds():取秒

    d.setFullYear():设置年份,设置月份的时候注意加1。

    九、数学函数的操作

    Math.ceil();大于当前小数的最小整数

    Math.floor();小鱼当前小数的最大整数

    Math.sqrt();开平方

    Math.round();四舍五入

    Math.random();随机数,0-1之间

    十、小知识点

    外面双引号,里面的双引号改为单引号;

    在div里面行高设置和整个外面高度一样,才能用竖直居中,居中是行居中。

    文本框取出来的值是字符串,需要用parseint()转化为数字

    s.match(reg); s代表一个字符串,reg代表一个字符串,两者进行匹配,如果两个字符串不匹配,返回一个null。

  • 相关阅读:
    Spark 1.1.0 安装测试 (分布式 Yarn-cluster模式)
    HBase Mac OSX 安装笔记
    hbase centOS生产环境配置笔记 (1 NameNode, 1 ResourceManager, 3 DataNode)
    ssh 配置自动登录
    CentOS 修改线程数限制等(limits.conf)
    Hadoop Mac OSX 安装笔记
    centos7安装及部署zabbix监控
    设置linux中Tab键的宽度(可永久设置)
    基于NFS共享存储实现KVM虚拟机动态迁移
    KVM虚拟化平台环境部署
  • 原文地址:https://www.cnblogs.com/dreamer666/p/5669744.html
Copyright © 2011-2022 走看看