DOMJavascript总结

来源:互联网 发布:联通 知乎 编辑:程序博客网 时间:2024/06/06 00:39
1,动态设置事件:
                <script type="text/javascript">
                function F1(){
                alert('In F1');
                }
                function F2{
                alert(In F2);
                }
                </script>
                <input type="button" value="关联F1" onclick="document.onclick=F1;/">
                input type="button" value="关联F2" onclick="document.onclick=F2;/">
                !!:onclick="document.onclick=F1;"此处的F1不要加括号,加括号,就调用了F1()函数,并且把返回值赋值给了document。onclick了
            document.body.onclick范围仅限于body;document。onclick范围于整个文档
2,使用window对象的属性,方法的时候可以省略window
3,    1>window.alert(‘大家好!’);//弹出警告对话框
                2>window.confirm('确定要删除吗?');确定,取消对话框,返回true和false
                3>prompt(‘message’,’default value‘);IE8阻止了。窗口弹出
                4>window.navigate(url);将网页从新导航到url,只支持IE,Opera11.6
                5>window.loction.href='url';支持绝大多数浏览器
                6>setTimeout:也是定时执行,但是不像setInterval那样重复的定时执行,只执行一次,
                clearTimeout:也是清除定时
                interval:间隔的意思,timeout超时的意思;
                var timeoutid=setTimeout("alert('hello')",2000);
                ==标题栏走马灯练习:
                ①②③④⑤
                    function scrollTitle() {
                        var str = document.title;
                        str = str.charAt(str.length - 1) + str.substring(0, str.length - 1);
                        document.title = str;
                    }
                    setInterval("scrollTitle()", 500);
    7>showModalDialog:弹出模态对话框!!注意showModalDialog必须在onclick等用户动手触发事件中才会执行,否则会被最新浏览器当成广告弹窗而拦截
                    第一个参数为弹出模态窗口的页面地址
                    在弹出的页面中调用window.close();关闭窗口;只有在对话框中调用window.close()才会自动关闭窗口,否则浏览器会提示用户进行确认
                    --showModelessDialog弹出非模态窗口,参数和showModalDialog一样
                    --给对话框传递参数,使用showModalDialog的第二个参数传递参数,在对话框中用,window.dialogArgument获得传递的参数值,
                    window.parent.returnValue设定返回值,这样在父窗口就可以通过showModalDialog返回值读取设置的返回值了
                    传递多个参数,将参数包装
                    到数组中,然后仍然通过第二个参数传递,返回多个返回值,也可以返回数组:var arr=new Array();arr[0]=30;arr[1]="tom";
                    !!在弹出的窗口也可以使用alert();(要注意缓存)
                    <body onLoad="javascript:document.getElementById('mytext1').value=window.dialogArguments;">
                    <input type="text" id="mytext1"/>
                    <input type="button" value="确定" onclick="javascript:window.parent.returnValue=getData();window.close();">
                </body>
                主页面:
                var result=window.showModalDialog('dialog2.htm',777);
                alert(result);
4,body,document对象事件:
                ->onload(页面加载后触发):        网页加载完毕时触发,浏览器是一边下载文档、一边解析执行,可能会出现JavaScript执行时需要操作某个元素,这个元素还没有加载,如果这样就要把操作的代码放到body的onload事件中,或者可以把JavaScript放到元素之后。元素的onload事件是元素自己加载完毕时触发,body onload才是全部加载完成。
                ->window.控件Id(不建议使用)
                ->document.getElementById('空间Id');(推荐)
                ->onunload(页面卸载后触发):网页关闭(或者离开)后触发。//刷新页面的时候、关闭选项卡的时候(多个选项卡)
                ->onbeforeunload(页面卸载前触发):在网页准备关闭(或者离开)前触发。//注意浏览器缓存
                <body onbeforeunload=“return ‘真的要放弃发帖退出吗?’; ”>。显示的文字随浏览器版本而有差异。// =“window.event.returnValue=‘’只兼容IE
                <body onbeforeunload=“window.event.returnValue=‘r u sure?’”></body> //IE的写法
                <body onbeforeunload=“event.preventDefault();”></body> //FF
                //不同浏览器有差别,所以这里直接用了
                <body onbeforeunload=“return ‘r u sure?’”></body>
5,其他事件:
        通用的HTML元素的事件:
                            onclick(单击事件)
                            ondblclick(双击事件)
                            onkeydown(按键按下)
                            onkeypress(点击按键)
                            onkeyup(按键释放)
                            onmousedown(鼠标按下)
                            onmousemove(鼠标移动)
                            onmouseout(鼠标离开元素范围)
                            onmouseover(鼠标移动到元素范围)
                            onmouseup(鼠标按键释放)
                            oncontextmenu(在浏览器中单击鼠标右键显示”右菜单“时触发)
6,window对象的属性1:
                    window.location对象:
                    window.location.href='';重新导航到新页面,可以取值,也可以赋值
                    window.location.reload();刷新页面
                    window.event用于获得发生事件时的信息
                    window.event.altKey属性,bool类型,表示事件发生时按下alt键;类似的还有ctrlKey,shiftKey等键
                    演示:<input type="button" value="点击" onclick="if(event.altKey){alert('Alt点击')}else{alert('普通点击')}" /> ;
                    //在FF(火狐)下的写法
                        function BodyClickHandlerOnFF(e) {
                                if (e.altKey) {
                                    alert('按下alt键');
                                } else {
                                    alert('普通点击!');
                                }
                            }
                    <body onclick="BodyClickHandlerOnFF(event);">

                    //在IE下的写法
                     //在IE下的写法
                            function BodyClickHandler() {
                                if (window.event.altKey) {
                                    alert('press alt key');
                                } else {
                                    alert('normal click');
                                }
                            }
                    <body onclick="BodyClickHandler();">

===================================兼容的写法======================================================
                     <script type="text/javascript">
                            document.body.onmousemove = function () {
                                if (window.event) {
                                    document.title = '(' + window.event.clientX + ',' + window.event.clientY + ')';
                                } else {
                                    document.title = '(' + arguments[0].clientX + ',' + arguments[0].clientY + ')';
                                }
                            }
                        </script>
7,window属性2:
                window.event的属性:
                                    clintX,clintY:发生事件时鼠标在客户区的坐标
                                    screenX,screenY:发生事件时,鼠标在屏幕上的坐标
                                    offsetX,offsetY:发生事件时鼠标相对于事件源的坐标
                (window.event.returnValue)            returnValue属性:        如果returnValue属性设置为false,就会取消默认事件的处理    在超链接的onclick里面禁止访问href的页面。在表单校验的时候禁止提交表单到服务器,防止错误数据提交给服务器、防止页面刷新。(onsubmit="window.event.returnValue=false;")
                window.event.returnValue不兼容火狐浏览器
                FireFox:e. preventDefault();取消事件的默认动作。
                直接写return false;IE、FF、Chrome都可以。
8,window对象的属性:
                window.event的属性:
                            --srcElement:获得事件源对象,几个按钮共享一个事件响应函数用;如:
                                click (object sender,EventArgs e)//IE和谷歌支持火狐用e.target;
                            --button:发生事件时鼠标按键    ,1为左键,2为右键,4为滑轮,要测试event.button的值时,要在onmousedown事件中测试,在onclick事件中,智能识别鼠标左键的单击,
                screen对象:
                            获取屏幕的信息;
                            alert("分辨率:"+screen.width+"*"+screen。height);
                            if (screen.width<1024||screen.height<768){
                            alert("分辨率太低!")
                            }
                实例:
                 //It works on IE
                    function MyEventHandler() {
                    var obj = window.event.srcElement;
                    alert(obj.value);
                    }
                    <input type="button" value="click me!" onclick="MyEventHandler();" />


                //FF
                //FF
                function MyEventHandlerFF(e) {
                var obj = e.target;
                alert(obj.value);
                }
                <input type="button" value="In FF Click me" onclick="MyEventHandlerFF(event);" />


                //IE and FF
                    function TNB(e) {
                    if (e.target) {
                    alert(e.target.value);
                    } else if (e.srcElement) {
                    alert(e.srcElement.value);
                    }
                    }
9,window对象的属性4:
                    clipboardData对象,对粘贴板的操作;
                    setData("Text",val):设置粘贴板中的值
                    getData("Text"):读取粘贴板的值,返回值为粘贴板中的内容
                    clearData("Text"):清空粘贴板;
                    案例:赋值地址给好友:详见下面备注:
                    <input type="button" value="推荐给好友" onclick="clipboardData.setData('Text','推荐给你一个网站,很好玩'+location.href);alert('已经将网址放到粘贴板中,发给你的好友即可');"/>
                    !!:当复制的时候body的oncopy方法被触发,直接return false就是禁止复制,<body oncopy="alert('禁止复制');return false;">
                    很多元素也有oncopy(复制),onpaste(粘贴),oncut(剪切)
                    案例:禁止粘贴账号:
                    帐号:<input type="text" /><br />
                    重复帐号:<input type="text" onpaste="alert('为保证帐号的正确,请勿粘贴帐号');return false;" />
                    案例:在网站中复制文章的时候,为了防止那些”拷贝党”不添加文章来源,自动在复制的内容后添加版权声明。代码见下页:
                    =========================================Firefox下使用clipboardData对象===================缺东西:随后补出来
                    代码:
                    function modifyClipboard(){
                    clipboardData.setData('Text',clipboardData.getData('Text')+'本文来自传智博客技术专区,转载请注明来源。'+loction.href);
                    }
                    oncopy="setTimeout('modifyClipboard()',100)"//用户在0.1秒钟以后再去改粘贴板中的内容,不能直接在oncopy哩修改粘贴板
                    不能直接在oncopy中执行对粘贴板的操作,因此设定定时器,0.1秒以后执行,这样就不再oncopy的执行调用栈上了。
                    history操作历史记录:
                    Window.history.back()后退;
                    window.history.forward()前进;
                    Window.history.go(-1)后退;
                    Window.history.go(1)前进;
10,Window对象的属性5——document
                    document属性:
                    document的方法:
                    write();//向文档中写入内容:在onclick等事件中代码会冲掉页面的内容,只有在加载过程中write才会与原有内容融合在一起
                    writeln();//向文档中写入内容后,添加了一个回车:在源代码里面换行
                    document.write()经常在广告代码,整合资源代码中被调用
                    =========================站长统计=====================================
                <SCRIPT language=JavaScript charset=gb2312 src="http://s23.cnzz.com/stat.php?id=613505&amp;web_id=613505&amp;show=pic2"></SCRIPT>
                A title=站长统计 href="http://www.cnzz.com/stat/website.php?web_id=613505" target=_blank><IMG border=0 hspace=0 vspace=0 src="http://icon.cnzz.com/pic2.gif"></A><IMG border=0 src="http://hzs13.cnzz.com/stat.htm?id=613505&amp;r=&amp;lg=zh-cn&amp;ntime=0.20273000 1323873730&amp;repeatip=1&amp;rtime=0&amp;cnzz_eid=16357578-1323873730-&amp;showp=1440x900&amp;st=31&amp;sin=&amp;res=0" width=0 height=0></DIV></DIV>


                ==========备注1===========
                document.write('<pre>');
                document.write('1');
                document.writeln('2');
                document.write('3');
                document.write('</pre>');
                这里是页面的内容。
                <script type="text/javascript">
                    document.write("<font color=red>红色呀</font>");
                </script>
                哈哈哈哈哈 。

                write经常在广告代码、整合资源代码中被使用
                广告代码的例子:在http://heima8.com/注册一个账户(测试用 账户名:itcast0710 密码:123456),申请一个广告代码,然后放到页面中
                整合资源的例子:百度新闻 http://news.baidu.com/newscode.html
                百度新闻代码相当于页面中嵌入另外一个网站的js文件,js文件就是一个大的write语句,这样的好处就是主页面不用写死内容,被嵌入的js内容变了嵌入的内容就变了。


                脚本的好处:
                1.自动执行
                2.动态生成。
                    ===================================example===============================
                <script type="text/javascript">
                var reffer = "";
                var url = "";
                if (window.parent != window.self) {
                    try { reffer = parent.document.referrer; }
                    catch (err) { reffer = document.referrer; }
                    try { url = parent.document.location; }
                    catch (err) { url = document.location; }
                } else { reffer = document.referrer; url = document.location; }
                document.writeln("<iframe marginwidth='0' marginheight='0' frameborder='0' bordercolor='#000000' scrolling='no' src='http://pv.heima8.com/index.php?p=126292971&b=100002856&itemid1=107075271&reffer=" + escape(reffer) + "&url=" + escape(url) + "' width='468' height='60'></iframe>");
                </script>

                ==========================站长统计的============================
                <script src="http://s84.cnzz.com/stat.php?id=3493955&web_id=3493955" language="JavaScript"></script>
11,Window对象的属性6
                最基本的dom 遍历:
                ===================================备注1 ================================
            //遍历直接子节点,如需获得所有节点,用递归。需要放在页面的最后测试(或者是在onload里面,否则页面还没有加载完毕。)
            c
            ======================递归版本=========================
            function dg(snodes){
            //alert(snodes.nodeName+'   '+snodes.childNodes.length);

                for(var i=0;i<snodes.childNodes.length;i++)
                {
                    alert(snodes.childNodes[i].nodeName);
        
                    if(snodes.childNodes[i].childNodes.length>0){
                    dg(snodes.childNodes[i]);
                }
        
                }
    
            }
            //放在onload事件中。
            dg(document.documentElement);



            //本来可以直接使用元素的Id来访问,但是如果元素嵌套在表单中后,就不能直接使用元素Id了
            //还需要window.form.元素id,所以我们一般用document.getElementById(元素id).该方法无论在哪里
            //都会搜索网页中的全部元素,找对应id的元素。
            document.getElementById('btn2').value = 'button';


            //如果在网页中有id重复的元素,那么getElementById()获得的是
            //第一id为指定id的元素,而不是数组
            var txtctrl = document.getElementById('txt1');
            getElementById();(非常常用),根据id获得对象,网页中id不能重复,也可以通过元素的Id来引用元素,但是有有效范围,form1.textbox1之类的问题(当元素放在form中的时候(html页面中需要通过form,元素id)),因此不建议直接通过id操作元素,而是通过getElementById;
            getElementByName();根据元素的name获得对象,由于网页中的元素的name 可以重复使用,比如多个RadioButton的name一样,因此getElementByName的返回值是对象数组;
            getElementByTagName();获得指定标签名称的元素数组,比如:getElementByTagName("p")可以获得所有的<p>标签;
            ”*“表示所有的标签
            !!:此处切记不要使用forin循环(forin循环是键值对,不是对象本身)
            综合例题:
            案例:点击一个按钮,被点击的按钮显示“呜呜”,其他按钮显示“哈哈”。
            ================================================

            <script type="text/javascript">
            function g(){
            ar ctrls=document.getElementsByTagName('input');
            for(var i=0;i<ctrls.length;i++){
            ctrls[i].value='哈哈';
            }
            window.event.srcElement.value='呜呜!!';
            }
            </script>
            练习:加法计算器。两个文本框中输入
            加法计算器。
            <input type="text" id="num1" />+<input type="text" id="num2" />
            <input type="button" onclick="calc()" value="=" /><input type="text" id="num3" />
            function calc() {
                var s1 = document.getElementById("num1").value;
                var s2 = document.getElementById("num2").value;
                var i3 = parseInt(s1) + parseInt(s2);
                document.getElementById("num3").value = i3;
            }
            案例:十秒钟后协议文本框下的注册按钮才能点击,时钟倒数。(btn.disabled = “” ,让元素可用。disabled=disabled,为不可用)disabled=true;
            案例:十秒钟后协议文本框下的注册按钮才能点击,时钟倒数。(btn.disabled = true )
            思路:
            1、注册按钮初始状态为不可用,disabled
            2、启动定时器,setInterval,1秒钟运行一次CountDown方法,设定一个初始值为10的全局变量,在CountDown方法中对全局变量倒数,然后将倒数的值写到注册按钮上(请仔细阅读协议(还剩8秒))。
            3、直到全局变量值为<=0,就让注册按钮可用,将按钮的文本设置为“同意”
            练习:美女时钟。
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <title>美女时钟</title>

            <script type="text/javascript">

                function GetImg() {
                var curDate = new Date();
                var h = curDate.getHours();
                // var m = curDate.getMinutes();
                var s = curDate.getSeconds();
                if (h < 10) {
                h = '0' + h;
                }
                if (s < 10) {
                s = '0' + s;
                }
                var filename = 'images/' + h + '_' + s + '.jpg';
                document.getElementById('imgClock').src = filename;
            }

                function ChangeTime() {
                setInterval(GetImg, 1000);
            }

        
            </script>

            </head>
            <body onload="ChangeTime();">
            <img id="imgClock" src="" />
            </body>
            </html>
12:冒泡事件:
                    事件冒泡:如果元素A嵌套在元素B中,那么A被点击不仅A的onclick事件会被触发,B的onclick也会被触发,触发的顺序是由内而外的,验证:在页面上添加一个table,table理由tr,tr哩有td,td哩放一个P,在P,td,tr,table中添加onclick事件响应,下边:
                     //window.event.srcElement指最初引发事件的事件源(对象、元素)
                        //alert('body click ' + window.event.srcElement.id);
                        //this表示当前谁在执行事件,则this就表示哪个对象。

                        <table onclick="alert('table onclick');">
                        <tr onclick="alert('tr onclick');">
                        <td onclick="alert('td onclick');"><p onclick="alert('p onclick');">aaaa</p></td>
                        <td>bbb</td>
                        </tr>
                        </table>
                    Span设置display:block;以后再设置height,width才会有效;
                    window.onload与body的onload的共同点:
                    1,二者效果完全一样,都是在页面内容都加载完毕后才触发;
                    2,由于网页中没有window所以在body中写onload
                    3,建议使用window.onload//使用JS脚本的方式高效
                    4,其实应该是document。onload,但是所有的浏览器都实现到了window对象上;
13:事件中的this:
                        事件中的this,除了可以使用event.srcElement在事件响应函数中,this表示发生的控件,只有在事件响应函数才能使用this获得发生事件的控件,在事件响应函数调用的函数中不能使用(这里this表示window对象),如果使用则要将this传递给函数或者使用event.srcElement;
                        (*)this和event.srcElement的语义是不一样的:
                        this是表示当前监听事件的对象 ;
                        event.srcElement是引发事件的对象:事件冒泡;
                        <body onclick="这个叫做事件响应函数,在这里写this表示发生事件的控件,在这里调用另外一个函数F1,则F1中不能使用this表示发生事件的控件">
                        body.onclick=F1;
14,动态创建DOM:
                    可以调用document的createElement方法来创建具有指定标签的DOM对象,然后通过调用某个元素的appendChild();方法将新创建元素添加到相应的元素下,//父元素对象.removeChild(子元素对象);删除元素。
                    function showIt() {
                        var divMain = document.getElementById("divMain");
                        var btn = document.createElement("input");
                        btn.type = "button";
                        btn.value = "我是动态的!";
                        divMain.appendChild(btn);
                    }
                    <div id="divMain"></div>
                    <input type="button" value="ok" onclick="showit()" />
                    =====================常用方法与属性===========================
                    方法:
                        createElement(‘element’);
                        appendChild(node);
                        removeChild(node);
                        replaceChild(new,old);
                        insertBefore(new,参照);
                    属性:
                        firstChild
                        lastChild


                        //通过js动态创建的元素,直接  右键→查看源码是看不到的,需要通过“开发人员工具”才能看到。s

                        nodeType
                        nodeType 属性可返回节点的类型。
                        最重要的节点类型是:元素类型 节点类型
                        元素element 1
                        属性attr 2
                        文本text 3
                        注释comments 8    
                        文档document 9
15,innerText和innerHTML:
                    innerText:表示:元素标签内内容的文本表示形式
                    innerHTML:表示:HTML源代码;
                    这俩个属性是可读可写的;火狐不支持innerText,在火狐下用textContent,也可以使用innerHTML设置普通文本编写兼容的innerText
                    详见实例:
                    =========================备注1==============================
                    function ihd() {
                    var vv = document.getElementById('dv1');
                    if (typeof (vv.innerText) == 'string') {
                        document.getElementById('dv1').innerText = '哈哈。。';
                    } else {
                        vv.textContent = '哈哈。。';
                        }
                    }
                    //innerText只能设置纯文本,即便写了html代码,也会对html代码进行编码,
                    //innerHTML可以设置html代码和纯文本。
                    ============innerHTML与innerText示例=================
                    <script type="text/javascript">
                        function showInfo() {
                        var aObj = document.getElementById('a1');
                        alert(aObj.innerHTML);
                        alert(aObj.innerText);
                    }
                    </script>

                    <a id="a1" href="#"><font color="red">传</font>智<font color="green">播</font>客.net培训</a>
                    <br />
                    <input type="button" value="show innerText and innerHTML" onclick="showInfo();" />
                    ===============================备注1===========================
                    <a id="a1" href="#"><font color="red">传</font>智<font color="green">播</font>客.net培训</a>
                    <script type="text/javascript">
                    function showInfo() {
                    var aObj = document.getElementById('a1');
                    alert(aObj.innerHTML);
                    alert(aObj.innerText); //获取去掉html标签的所有文本
                    }
                    </script>
                    =========================================outerText与outerHTML=====================================
                    将原来的元素直接替换。
                    innerHTML也可以替代createElement,属于简单,粗放型,后果自负穿的创建
                    示例:
                    function createlink() {
                    var divMain = document.getElementById("divMain");
                    divMain.innerHTML = "<a href='http://www.rupeng.com'>如鹏网</a>";}
                    <span/>的innerHTML和<span></span>的innerHTML不一样。//建议,在使用之前要保证标签具有开始和结束标记,否则,会出现一下意想不到的后果。
16,浏览器兼容性问题:
                    浏览器兼容性的例子:
                    IE6,IE7对table。appendChild(”tr“)的支持和IE8不一样
                    用insertRow,insertCell来代替或者为表格添加tbody,然后向tbody中添加tr
                    所以动态网页加载网站列表的程序修改为:
                    var tr = tableLinks.insertRow(-1);//FF必须加-1这个参数,表追加。
                    var td1 = tr.insertCell(-1);
                    td1.innerText = key;
                    var td2 = tr.insertCell(-1);
                    td2.innerHTML = "<a href='" + value + "'>" + value + "</a>";
                    或者:(不建议)
                    <table id="tableLinks">
                    <tbody></tbody>
                    </table>,然后tableLinks. tBodies[0].appendChild(tr);
16,innerHTML还是操作Dom节点
                    操作页面元素的时候是用innerHTML的方式还是createElement(),appendChild()与removeChild()的方式?
                    1,对于大量进行节点操作时,使用innerHTML的方式性能要好于频繁的Dom 操作,先将页面的HTML 代码写好,然后调用一次innerHTML,而不要反复的调用innerHTML
                    2,对于使用innerHTML=‘’的方式来删除节点,在某些情况下会存在内存问题,比如:div下有很多其他元素,每个元素绑定有事件处理程序,此时innerHTML值是把当前元素从节点树上移除了,但是那些事件处理程序依然占内存
17,代码是否要放到onload中:
                    如果JS代码需要操作页面上的元素,则该代码需要放到onload中;
                    因为:当页面加载完毕之后页面才会有相关的元素;
                    如果JS代码中没有操作页面元素的语句,则可以将代码直接写在<script>标签中;
                    例如:   声明变量,相加求和等操作。
                    <body>
                    <!-- html标签-->
                    <script type="text/javascript">

                        //写在这里的代码,由于已经是页面的底部,在执行该代码时,页面的元素已经都加载完毕,所以可以不放到onload里面也可以操作页面上的元素。
                        //建议将操作页面元素的代码都放到onload里面。
                    </script>
                    </body>
18,JS操作页面样式及其他:
                    易错点:修改元素的样式不是设置class属性,而是className属性;
                    修改元素的样式不能this.style="background-color:red".
                    剖析:单独修改样式的属性使用style.属性名;注意在CSS中属性名在javascript中操作的时候属性名可能不一样,主要集中在那些属性名中含有-的属性,因为javascript中-是不能做属性,类名的所以CSS中背景颜色是background-color。而javascript则是style.backgroundColor;元素样式名是class,在javascript中是className属性:font→style.fontSize;margin-top→style.marginTop //驼峰命名法。
                    单独修饰控件的样式:<input type="button" value="AAA" onclick="this.style.color='red'"/>
                    技巧:没有文档的情况下,随便给一个元素设定id;然后再JS中 就能id.style;.出来能用的属性。
                    操作float样式的时候,IE与其他浏览器不太一样;
                    IE:obj.style.styleFloat='right';
                    其他浏览器:obj.style.cssFloat='right';
                    通用代码祥见下:
                    ========================备注1==========================
                    var vv = document.getElementById('dv1');
                    if (typeof (vv.style.styleFloat) == 'string') {
                        vv.style.styleFloat = 'right';
                    } else {
                        vv.style.cssFloat = 'right';
                    }
                    ========================================================

                    <style type="text/css">
                        .emptyfield
                        {
                            background-color:Red;
                        }
                        .normal
                        {
                        background-color:inherit;
                        }
                    </style>
                    <script type="text/javascript">
                        function check(txt) {
                        var s = txt.value;
                    if (s.length <= 0) {
                        txt.className = "emptyfield";
                        alert('这个字段必填!');                
                    }
                    else {
                        txt.className = "normal";
                        }
                        }
                    </script>
                    <input type="text" onblur="check(this)" />
                    <input type="text" onblur="check(this)" />
                    <input type="text" onblur="check(this)" />
                    案例2:个td的时候,将这个td及之前的td背景变为红色,之后评分控件V1,用一个单行5列的Table做评分控件,监听td的click事件,点击一的td背景变为白色。鼠标在评分控件上的时候显示超链接形式的鼠标图标。自定义简易评分控件代码:
            =========================================备注1==========================
                        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                    <html xmlns="http://www.w3.org/1999/xhtml">
                    <head>==
                    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                    <html xmlns="http://www.w3.org/1999/xhtml">
                    <head>
                        <title>评分控件好看版</title>
                        <script type="text/javascript">

                        function getCurrentIndex(curTd) {

                    <title>评分控件好看版</title>
                    <script type="text/javascript">

                    function getCurrentIndex(curTd) {
                        var tdArr = document.getElementById('tblVote').getElementsByTagName('td');
                        for (var i = 0; i < tdArr.length; i++) {
                            if (curTd == tdArr[i]) {
                                return i;
                            }
                        }
                        return -1;
                    }

                    function initialEvent() {

                        var tdArr = document.getElementById('tblVote').getElementsByTagName('td');

                        for (var i = 0; i < tdArr.length; i++) {
                            //为每个td设置分数
                            tdArr[i].setAttribute("curScore", 10 * (i + 1));

                            //绑定onmouseover事件
                            tdArr[i].onmouseover = function () {
                                //设置鼠标指针为:手形
                                this.style.cursor = 'hand';
                                var tdArr = document.getElementById('tblVote').getElementsByTagName('td');
                                var curIndex = getCurrentIndex(this); //这里只能传this参数,不能传tdArr[i]

                                //将curIndex之前的五角星设置为:★
                                for (var j = 0; j <= curIndex; j++) {
                                    tdArr[j].innerHTML = '★';
                                }
                                //将curIndex之后的五角星设置为:☆
                                for (var j = curIndex + 1; j < tdArr.length; j++) {
                                    tdArr[j].innerHTML = '☆';
                                }

                            }

                            //绑定onclick事件
                            tdArr[i].onclick = function () {
                                alert('您当前的评分为:'+this.getAttribute('curScore'));
                            }
                            }
                            }
                        </script>
                        </head>
                    <body onload="initialEvent();">
                        <table id="tblVote" border="0" cellpadding="0" cellspacing="0" style="font-size: 40px;
                            color: Blue">
                        <tr>
                        <td>
                            ☆
                        </td>
                        <td>
                            ☆
                        </td>
                        <td>
                            ☆
                        </td>
                        <td>
                            ☆
                        </td>
                        <td>
                            ☆
                        </td>
                        </tr>
                        </table>
                        </body>
                        </html>
19:控制层的显示:
                        修改style.display,例子:切换层的显示:
                        function togglediv(){
                        var div1=document.getElementById('div1');
                         if (div1.style.display == '') {
                            div1.style.display = 'none';//不显示
                        }
                        else {
                            div1.style.display = '';//显示
                        }
                        }
                        与元素对象.enabled=true或者readonly=true等不一样 ,这里是样式,不是元素的直接属性不能用true或者false
                        !!:对于div、table、font、p这类型的标签时没有name属性的。
                        对于没有name属性的元素,如果仍要加个name属性。那么通过document.getElementsByName()也无法获取到。
                        一般只有表单元素才有name属性。
原创粉丝点击