javascript 学习笔记 《JavaScript And DHTML Cookbook》2

<接上篇 >
·表单( forms )
  1.访问表单
    document.forms[0]
    document.forms["myForm"]
    document.myForm
    document.all.myForm
    document.getElementById("myForm")
    
    document.forms[0].elements[0]
    document.forms["myForm"].elements["myElement"]
    document.myForm.myElement

  2.让文本框自动获得焦点
    //让名为myText的文本框在页面加载时自动获得焦点,并选中当前文本框的值
    <body οnlοad="document.myForm.myText.focus(); document.myForm.myText.select();">

  3.通用的文本框验证函数
    //验证是否为空
    <input type="text" οnchange="isEmpty(this)">
    
    function isEmpty(obj){
        if(obj.value == null || obj.value == "") alert("此字段不能为空");
    }
    
    //验证是否为数字
    <input type="text" οnchange="isNumber(this)">
    
    function isNumber(obj){
        var val = obj.value;
        var r = //w[0-9]{1,}/;
        if( !r.test(val) ) alert("此字段必须为数字")
    }
    
    //验证是否长度符合
    <input type="text" οnchange="isLen7(this)">
    
    function isLen7(obj){
        if(obj.value.length != 7) alert("此字段长度必须为7位");
    }
    
    //验证有效E-Mail地址
    <input type="text" οnchange="isEmail(this)">
    
    function isEmail(obj){
        var val = obj.value;
        var r = /^/w[0-9a-zA-Z./-]{3,}@/w[0-9a-zA-Z./-]{2,}./w[a-zA-Z.]{2,4}$/;
        if( !r.test(val) ) alert("请输入有效的E-Mail地址");
    }

  4.阻止表单提交
    <form action="#" οnsubmit="return checkValue()"></form>
    
    function checkValue(){
        //do something to check the value.
        return false;
    }

  5.改变表单提交的页面
    <form action="#" οnsubmit="chooseAction()"></form>
    
    fucntion chooseAction(){
        if(document.myForm.myCheckBox.checked) document.myForm.action = "a.asp";
        else document.myForm.action = "b.asp";
    }

  6.阻止向文本框输入某些字符
    <input type="text" οnkeydοwn="checkKeyCode(event)">
    
    fucntion checkKeyCode(evt){
        evt = (evt) ? evt : event;
        var c = (evt.charCode) ? evt.charCode : evt.keyCode;
        if(c < 48 || c > 57){
            alert("此字段只允许输入数字");
            return false;
        }
        else return true;
    }

  7.回车后焦点跳到另一个输入控件
    <input id="txt1" type="text" οnkeypress="return focusNext(this,'txt2',event)">
    <input id="txt2" type="text">
    
    function focusNext(form,name,evt){
        evt = (evt) ? evt : event;
        var c = (evt.charCode) ? evt.charCode : evt.keyCode;
        if(c == 13 || c == 3){
            form.elements[name].focus();
            return false;
        }
        else return true;
    }

  8.使某一控件不可用
    document.myForm.myElement.disabled = true;

  9.隐藏/显示某一控件
    document.myForm.myElement.style.display = "block";  //显示
    document.myForm.myElement.style.display = "none";   //隐藏

  10.控制下拉框
    //清空下拉框中的项
    document.myForm.mySelect.options.length = 0;
    
    //添加下拉框中的项
    var item = new Option("myText","myValue");
    document.myForm.mySelect.add(item);
    
    //获取下拉框当前选中的值
    var val = document.myForm.mySelect.value;

//-----------------------------------------------------------------------

·事件( Event )
  1.事件介绍:
    onabort     //当用户阻止发送图片至客户端时触发
    onblur      //当控件失去焦点时触发
    onchange    //当控件失去焦点并且内容发生了改变时触发
    onclick     //当用户点击某控件时触发
    ondblclick  //当用户双击某控件时触发
    onerror     //当执行某脚本发生异常时触发
    onfocus     //当某控件获得焦点时触发
    onkeydown   //当用户按下键盘某个键时触发
    onkeypress  //当用户按下并松开键盘某个键时触发
    onkeyup     //当用户松开键盘某个键时触发
    onload      //用页面被加载完成后触发
    onmousedown //当用户按下鼠标时触发
    onmousemove //当用户移动鼠标时触发
    onmouseout  //当用户将鼠标移出某控件时触发
    onmouseover //当用户将鼠标移入某控件时触发
    onmouseup   //当用户松开鼠标时触发
    onmove      //当用户移动浏览器窗口时触发
    onreset     //当用户点击表单"重置"按钮时触发
    onresize    //当用户改变浏览器窗口的大小时触发
    onselect    //当用户选中文本框内容时触发
    onsubmit    //当用户点击表单"提交"按钮时触发
    onunload    //当用户关闭浏览器时触发
    
    //以下为IE独有的方法
    onbeforecopy    //当用户使用"复制"功能前触发
    onbeforecut     //当用户使用"剪切"功能前触发
    onbeforepaste   //当用户使用"粘贴"功能前触发
    onbeforeprint   //当用户使用"打印"功能前触发
    oncontextmenu   //当用户调出上下文菜单时触发
    oncopy          //当用户使用"复制"功能时触发(未复制)
    oncut           //当用户使用"剪切"功能时触发(未剪切)
    ondrag          //当用户拖动某控件前触发
    ondragend       //当用户拖动某控件后触发
    ondragenter     //当用户拖动某控件到当前控件上面后触发
    ondragleave     //当用户将某控件拖出当前控件时触发
    ondragover      //当用户将某控件拖出当前控件上面时触发
    ondrop          //当用户将某控件拖到当前控件后触发
    
  2.浏览器事件兼容性
    function funName(evt){
        evt = (evt) ? evt : event;
        if(evt){ //to do something }
    }
    
  3.动态为控件添加事件
    document.getElementById("myControl").addEventListener("click",funName,false);
    document.getElementById("myControl").onclick = funName;
    
  4.页面加载后调用某函数
    <body οnlοad="funName(); funName2();">
    window.onload = funName;
    
  5.确定与点击事件相匹配的事件
    //9.3和9.4 比较复杂.且不清楚事件是JS API还是自定义的
    
  6.防止重复执行两次点击事件
    //当第一次点击按钮后,将表单提交回服务器,然后submitForm()函数便指向blockIt()函数.
    //除非页面重新加载..否则点击无效(无作用)
    <input type="button" value="提交" οnclick="submitForm()">
    function submitForm(){
        document.forms["myForm"].submit();
        submitForm = blockIt;
        reutrn false;
    }
    function blockIt(){
        return false;
    }
    
  7.阻止用户点击鼠标右键或中键
    function myFun(evt){
        evt = (evt) ? evt : event;
        if(evt.button || evt.button == 1 || evt.button == 2){ return false; }
        else{ //do something }
    }
    
  8.阻止用户键入某些字符
    function myFun(evt){
        evt = (evt) ? evt : event;
        var c = (evt.charCode) ? evt.charCode : evt.keyCode;
        if(c < 48 || c > 57){ return false; }
        else reutrn true;
    }

  9.获取当前鼠标指向的对象
    function myFun(evt){
        evt = (evt) ? evt : event;
        var elem = (evt.target) ? evt.target : evt.srcElement;
        //do something
    }
    
  10.特殊功能键
    evt.ctrlKey  evt.altKey  evt.shiftKey
    
  11.播放媒体文件
    <object id="hiPing" width="1" height="1" 
        classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="#Version=6,0,0,0">
        <param name="FileName" value="hi.wav">
        <param name="AutoStart" value="false">
    </object>
    
    function playSound(id){
        if(document.all[id].FileName){ document.all[id].Play(); }
    }

//-----------------------------------------------------------------------

·页面导航
  1.跳转至另一个页面
    location = "newPage.html";
    location.href = "newPage.html";

  2.不记录历史记录的页面跳转
    location.replace("newPage.html");
    
  3.利用下拉框跳转页面
    <select name="chooser" id="chooser" οnchange="redirect()">
        <option value="">Choose a Destination:</option>
        <option value="index.html">Home</option>
        <option value="products.html">Products</option>
        <option value="support.html">Support</option>
        <option value="contact.html">Contact Us</option>
    </select>
    
    function redirect(){
        var t = document.all.chooser.value;
        if(t){ location = t; } 
    }
    
  4.利用Cookies保存用户数据
    <body οnunlοad="saveData()">    //要保存数据的页面
    <body οnlοad="readData()">      //新页面
    
    function saveData(){
        var data = document.forms[0].userName.value;
        var expDate = getExpDate(180, 0, 0);
        setCookie("userName", data, expDate); 
    }
    
    function readData( ) {
        var data = getCookie("userName");
        document.forms[0].userName.value = data; 
    }

  5.利用URL来保存用户数据
    function goNext(url){
        var data = document.forms[0].userName.value;
        location.href = url + "?" + escape(data);
    }
    
    function readData( ) {
        var srchString = unescape(location.search.substring(1, location.search.length));
        if (srchString.length > 0){ document.forms[0].userName.value = srchString; }
    }

  6.创建一个自定义右键菜单
    //菜单就自己画了,这里只说方法
    function initContextMenus(){
        if (document.body.addEventListener){
            document.body.addEventListener("contextmenu", showContextMenu, true);
            document.body.addEventListener("click", hideContextMenus, true);
        }
        else {
            document.body.oncontextmenu = showContextMenu;
        }
        setContextTitles( );
    }

//-----------------------------------------------------------------------

·管理样式 ( CSS )
  1.三种嵌入样式表的方法:
    //在头部统一声明样式
    <style type="text/css"> body{ font-size:9pt; } </style>
    
    //从外部嵌入一样式表文件
    <link rel="stylesheet" type="text/css" href="myStyleSheet.css">
    
    //直接在元素属性里定义
    <p style="font-size:9pt"></p>
    
  2.分配样式规则给某一元素
    <style type="text/css">
        <!-- tagName {styleProperty1:value1; styleProperty2:value2; ...} -->
    </style>
    
  3.自定义一种样式供一类元素使用
    .myStyle { font-size:9pt; }
    <p class="myStyle"></p>
    
  4.自定义一种样式供单一元素使用
    #myId { font-size:9pt; }
    <p id="myId"></p>
    
  5.页面加载后动态修改页面样式表链接
    <link id="basicStyle" rel="stylesheet" type="text/css" href="styles.normal.css">
    document.getElementById("basicStyle").href = "newstyle.css";
    
  6.打开/关闭某个样式表
    document.styleSheets[1].disabled = false;
    
  7.动态设置/更改某一元素的样式
    document.getElementById("myElement").className = "myStyle";
    
  8.元素样式的优先级
    //原则上来讲,浏览器会使用最后的一种样式(就近原则)
    //当同时给一元素设置id和class两种样式时,id的样式优先于class
    //当同时给一元素设置class和style两种样式时,style优先于class
    //当同时给一元素设置style和id两种样式时,style优先于id
    <style>
        .myStyle { font-size:10pt; }
        #myId { font-size:11pt; }
    </style>
    <p id="myId" class="myStyle" style="font-size:12pt">123</p>

//-----------------------------------------------------------------------

·动态更改对象的视觉效果
  1.更改对象的字体样式
    document.getElementById("myElement").style.color = "#EEEEEE";
    
    //相应的属性
    color : 字体的颜色
    font : 字体的全局设置
    fontf : 字体名称
    fontSize : 字体大小(pt, px)
    fontStretch : 字符间隔(px)
    fontStyle : 字体的样式(normal, italic)
    fontVariant : 字母大小常量(normal, small-caps)
    fontWeight : 字体粗细(bold, bolder, lighter, normal)
    textDecoration : 字体装饰(blink, line-through, none, overline, underline)
    textTransform : 字母大小写(capitalize, lowercase, none, uppercase)
    
  2.更改页面背景样式
    document.body.background = "url(bg.gif) repeat fixed";
    
    //相应的属性
    background : 背景的全局设置
    backgroundAttachment : 背景是否随滚动条滚动而滚动(fixed, scroll)
    backgroundColor : 背景颜色
    backgroundImage : 背景图片
    backgroundPosition : 背景图片的位置(bottom, center, left, right, top)
    backgroundRepeat : 背景图片是否重复或拉伸(no-repeat, repeat, repeat-x, repeat-y)

  3.显示/隐藏某对象
    document.getElementById("myElement").style.visibility = "hidden";
    document.getElementById("myElement").style.display = "none";
    
  4.细调对象的透明度
    document.getElementById("myElement").style.filter = "alpha(opacity=80)";

//-----------------------------------------------------------------------

·布置HTML对象的位置
  1.动态更改对象的位置
    <div id="myDiv" style="position:absolute; left:100px; top:100px">Content Here</div>
    document.getElementById("myDiv").style.top = "200px";

  2.设置对象在页面上的层次关系
    //值越大对象越前面
    document.getElementById("myElement").style.zIndex = 123;

//-----------------------------------------------------------------------

·动态创建内容
  1.页面加载时动态创建内容
    <p>现在是:<script>var d = new Date(); document.write(d.toLocaleTimeString());</script></p>
    
  2.动态重画页面
    <input type="text" id="txtName"><input type="button" value="确定" οnclick="rewritePage()">
    <scritp>
    function rewritePage(){
        var user = document.getElementById("txtName").value;
        var html = "<html><head><title>欢迎</title></head>";
        html += "<body>欢迎您!" + user + "</body></html>";
        document.write(html);
        document.close();
    }
    </script> 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值