现在的位置: 首页 > 综合 > 正文

记录我的旅程3之JavaScript Dom学习笔记

2012年11月29日 ⁄ 综合 ⁄ 共 5532字 ⁄ 字号 评论关闭

      下面我们接着旅程2继续我们的Dom征程。在这片博文中我完成了document属性的所有介绍,并在最后用几个小案例充分的讲解了这些知识点。这些里面有些特效很常见,在我们网站注册的时候我们会限制单击控件的时间,让用户有足够的时间读完协议控件才能可用,实现注册。

  1. document属性1

(1) document是window对象的一个属性,因为使用window对象成员的时候可以省略window,所以一直写document。

(2) document的方法

 1) write:向文档写入内容,writeln和write差不多,只不过最后添加一个回车。

    <script type="text/javascript">

        document.write("<a href='http://www.baidu/com'>百度</a>");

</script>

<input type="button" value="点击" onclick="document.write('您好')" />

      注释:在onclick等事件中写的代码会冲掉页面的内容,只有在页面加载过程中write才会与原有内容结合在一起。

 2) write经常在广告代码,整合资源代码中被广泛的使用。

(3) getElementById方法(非常有用),根据元素的Id获得对象,网页中Id不能重复,也可以直接通过元素的Id来引用元素,但是有有效范围之类的问题,因此不建议通过Id操作对象,而是通过getElementById。

    <script type="text/javascript">

        function btnClick() {

            var txt = document.getElementById("textBox1");

            //alert(txt.value);

            alert(textBox1.value);

        }

        function btnClick2() {

            var txt = document.getElementById("textBox2");

            //alert(txt.value);

            //alert(textBox2.value) //这句话是错误的

            alert(form1.textBox2.value);

        }

    </script>

    <input type="text" id="textBox1" />

    <input type="button" value="点一下" onclick="btnClick()" />

    <form action="f1f2.htm" id="form1">

        <input type="text" id="textBox2" />

        <input type="button" value="点击" onclick="btnClick2()" />

</form>

注释:建议使用getElementById获取对象

(4) getElementByName,根据元素的name获取对象,由于页面中元素的name可以重复,比如:多个RadioButton的name一样,因此getElementByName返回值是对象数组

    <script type="text/javascript">

        function btnClick() {

            var radios = document.getElementsByName("gender");

           /*在JS中下面的代码不像C#中的foreach,并不是遍历每一个元素,而是遍历Key

            for (var r in radios) {

                alert(r.value);

            }*/

            for (var i = 0; i < radios.length; i++) {

                var radio = radios[i];

                alert(radio.value);

            }

        }

    </script>

    <input type="radio" name="gender" value="男" />男<br />

    <input type="radio" name="gender" value="女" />女<br />

    <input type="radio" name="gender" value="保密" />保密<br />

    <input type="button" value="click" onclick="btnClick()" />

(5) getElementsByTagName,获得指定标签过程的元素数组,比如:getElementByTagName(“P”)可以获得所有的<p>标签。

        function btnClick1() {

            var inputs = document.getElementsByTagName("input");

            for (var i = 0; i < inputs.length; i++) {

                var input = inputs[i];

                input.value = "韩迎龙";

            }

        }

    <input type="button" value="click" onclick="btnClick()" />

    <input type="button" value="click" />

    <input type="button" value="click" />

<input type="button" value="click" onclick="btnClick1()" />

案例1:当单击某个控件的时候某个控件的属性变化案例,也就是我们的控件上面显示的是”哈哈”,但是当我们单击的时候就会变成”Hello”,当我们单击其他的时候前面的控件恢复原始状态。

   <script type="text/javascript">

        function initEvent() {

            var inputs = document.getElementsByTagName("input");

            for (var i = 0; i < inputs.length; i++) {

                var input = inputs[i];

                input.onclick = btnClick;  //单击控件的onclick事件

            }

        }

        function btnClick() {

            var inputs = document.getElementsByTagName("input");

            for (var i = 0; i < inputs.length; i++) {

                var input = inputs[i];

                //window.event.srcElement——>取得引发事件的控件

                if (input == window.event.srcElement) {

                    input.value = "Hello";

                }

                else {

                    input.value = "哈哈";

                }

            }

        }

    </script>

<body onload="initEvent()">

    <input type="button" value="哈哈" />

    <input type="button" value="哈哈" /> 

    <input type="button" value="哈哈" /> 

</body>

案例2:十秒钟后协议文本框的注册按钮才能够点击,时钟倒数(btn.disabled=true)。

思路 1.注册按钮初始化状态不可用,disabled

2.启动定时器,setInterval,设定一个初始值为10的全局变量,1秒钟运行一次CountDown方法,在CountDown方法中对全局变量倒数,然后将到数值写在注册按钮上面(请仔细阅读协议(还剩8秒))

3.直到全局变量值<=0,就让注册按钮可用,将按钮的文本设置为”同意”。

    <script type="text/javascript">

        var leftSeconds = 10;

        var intervalId;

        function CountDown() {

            var btnReg = document.getElementById("btnReg");

       if (btnReg) {   //如果网页速度非常慢的话,可能定时器运行的时候控件还没有加载

                if (leftSeconds <= 0) {

                    btnReg.value = "同意";

                    btnReg.disabled = "";

                    clearInterval(intervalId); //停止定时器

                }

                else {

                    btnReg.value = "请仔细阅读协议(还剩" + leftSeconds + "秒)";

                    leftSeconds--;

                }    }     }

        intervalId = setInterval("CountDown()", 1000);

    </script>

<body>

    <textarea></textarea><br /><br />

    <input type="button" value="同意" disabled="disabled" id="btnReg" />

</body>

案例3:加法计算器,两个文本框中输入数据,点击[=]按钮将相加的结果放在第三个文本框中。

    <script type="text/javascript">

        function CalClick() {

            var value1 = document.getElementById("txt1").value;

            var value2 = document.getElementById("txt2").value;

            value1 = parseInt(value1, 10);

            value2 = parseInt(value2, 10);

            document.getElementById("txtResult").value = value1 + value2;

        }

    </script>

<body>

<input type="text" id="txt1" />+<input type="text" id="txt2" />

<input type="button" onclick="CalClick()" value="=" />

<input type="text" id="txtResult" readonly="readonly" />

</body>

案例3:美女时钟,每一秒循环显示一个美女,考虑(当最后一秒的时候变成个位数)。

    <script type="text/javascript">

        //var now = new Date(); 不要写在这里,否则取得的时间不变

        function FillTwoLen(i) {

            if (i < 10) {

                return "0" + i;

            }

            else {

                return i;

            }

        }

        function Refersh() {

            var imgMM = document.getElementById("imgMM");

            if (!imgMM) {

                return;

            }

            var now = new Date();

            var fileName = FillTwoLen(now.getHours()) + "-" + FillTwoLen(now.getSeconds()) + ".jpg";

            imgMM.src = "images/" + fileName;

        }

        setInterval("Refersh()", 1000);

    </script>

<body onload="Refersh()">

    <img id="imgMM" src="" />

</body>

抱歉!评论已关闭.