04_javascript(二)-DOM

javascript
  • javascript里没有集合,只有数组
js隔行换色
  • table标签补充
    • table标签第一行用<thead><tr><th></th></tr></thead>
    • table标签表格内容用<tbody><tr><td></td></tr></tbody>
  • 思路:
    1. onload函数在页面加载完成后调用函数
      • onload可以在body标签中调用一个有名的函数,但是直接在script标签通过:window.onload = function() {}调用也一样
    2. document.getElementById()获取表格元素(为了获取表格中tbody的行数)
    3. tBody中rows.length获取所有的行数
<script>
window.onload = function(){
    //1.获取表格
    var tblEle = document.getElementById("tbl");
    //2.获取表格中tbody里面的行数(长度)
    var len = tblEle.tBodies[0].rows.length;
    //alert(len);
    //3.对tbody里面的行进行遍历
    for(var i=0;i<len;i++){
        if(i%2==0){
            //4.对偶数行设置背景颜色
            tblEle.tBodies[0].rows[i].style.backgroundColor="pink";
        }else{
            //5.对奇数行设置背景颜色
            tblEle.tBodies[0].rows[i].style.backgroundColor="gold";
        }
    }
}
</script>
鼠标移动到哪一行,表格哪一行颜色不一样
  • onmouseover & onmouseout
<script>
    function changeColor(id,flag){
        if(flag=="over"){
            document.getElementById(id).style.backgroundColor="red";
        }else if(flag=="out"){
            document.getElementById(id).style.backgroundColor="white";
        }
    }
</script>
# 网页加载完测后对元素设置事件
<script>
    window.onload = function(){
        document.getElementById("btn").onclick = function(){
            location.href="xxx.html"
        }
    }
</script>
  • 常用事件:
    • onblur:元素失去焦点(表单校验)
    • onfocus:获取焦点(表单校验)
    • onchange:用户改变区域内的内容(二级联动)
    • onclick:点击
    • ondblclick:双击
    • onload:某个页面或者图像加载完成
    • onmouseover:鼠标悬浮在元素上
    • onmouseout:鼠标离开元素范围
    • onsubmit:提交表单
    • onkeydowm:键盘按下(网页搜索监听)
    • onkeypress:键盘释放(网页搜索)
js完成复选框全选效果
  • 应用:群发邮件,批量操作
  • 实现:目前只能使用传统的javascript来实现
  • document.getElementsByName:获取多个
<script type="text/javascript">
    function selectAll(element) {
        var flag = element.checked;
        
        elements = document.getElementsByClassName("checked");
        for (var i = 0; i < elements.length; i++) {
            elements[i].checked = flag;
        }
    }
</script>
DOM的操作
  • DOM:
    • document:html被浏览器解析后生成的树结构的文档对象模型
      • 每个载入浏览器的html文档都会成为document对象
    • 所有的标签都是Element(元素)
    • 标签中的属性:attributte
    • 标签中的内容:text
    • 以上的document,element,attribute,text都统称为node
  • document对象:
    • getElementById:获取单个Element
    • getElementsByName:获取Element数组
    • getElementsByTagName:获取Elment数组
    • ==创建文本节点:document.createTextNode()==
    • ==创建元素节点:document.createElement()==
  • element对象
    • element.appendChild():在元素里追加子节点
    • element.firstChild:返回元素首个子元素
    • element.getAttribute():获取节点中某个具体属性
    • element.innerHTML():设置或者返回元素的内容
    • element.insertBefore():在指定子节点前插入子元素
    • element.lastChild:返回最后一个子元素
    • element.setAttribute():将制定属性设置为制定值
  • attribute对象:
    • attirb.value:获取属性值
<!--动态添加城市--
<script type="text/javascript">
    function addCity() {
        var textNode = document.createTextNode('杭州')
        var liEle = document.createElement('li')
        liEle.appendChild(textNode)
        //通过liEle.inerHTML = '杭州'也可以添加
        var cityList = document.getElementById('cityList')
        cityList.appendChild(liEle)
    }
</script>
js完成二级联动效果
  • 开发中特别常用
  • 使用二维数组存储省市(实际开发中从数据库中获取数据)
  • 用户选择省份(通过方法传参的方式:this-代表当前操作的对象,this.value)
  • javascript中数组对象:
    • 创建对象:
      • new Array()
      • new Array(size)
      • new Array(ele1, ele2, ele3,...)
  • 清空下拉列表的内容:
    • selection.options.length = 0
<script>
    //1.创建一个二维数组用于存储省份和城市
    var cities = new Array(3);
    cities[0] = new Array("武汉市","黄冈市","襄阳市","荆州市");
    cities[1] = new Array("长沙市","郴州市","株洲市","岳阳市");
    cities[2] = new Array("石家庄市","邯郸市","廊坊市","保定市");
    cities[3] = new Array("郑州市","洛阳市","开封市","安阳市");
    
    function changeCity(val){
        //7.获取第二个下拉列表
        var cityEle = document.getElementById("city");
        //9.清空第二个下拉列表的option内容
        cityEle.options.length=0;
        //2.遍历二维数组中的省份
        for(var i=0;i<cities.length;i++){
            //注意,比较的是角标
            if(val==i){
                //3.遍历用户选择的省份下的城市
                for(var j=0;j<cities[i].length;j++){
                    //alert(cities[i][j]);
                    //4.创建城市的文本节点
                    var textNode = document.createTextNode(cities[i][j]);
                    //5.创建option元素节点
                    var opEle = document.createElement("option");
                    //6.将城市的文本节点添加到option元素节点
                    opEle.appendChild(textNode);
                    //8.将option元素节点添加到第二个下拉列表中去
                    cityEle.appendChild(opEle);
                }
            }
        }
    }
</script>
javascript内置对象
  • Array:

    • 数组的长度可变
    • 数组长度为最大索引 + 1
  • Boolean:

    • new Boolean(val):如果参数不写,默认创建的为false
  • Date:

    • getTime():返回时间戳,访问网站,浏览器默认从缓存里取,如果加上时间戳,则不会取缓存的(解决浏览器缓存问题)
  • Math:与java里的基本一致

  • Number:与java里的基本一致

  • String:

    • match():匹配正则表达式
    • subStr(start, counts):从起始索引提取字符串中指定数目的字符
    • subString(start, end):提取字符串中两个指定索引号之间的字符(包头不包尾)
    <script>
        var str = "-a-b-c-d-e-f-";
        var str1 = str.substr(2,4);//-b-c
        //alert(str1);
        
        var str2 = str.substring(2,4);//-b
        alert(str2);
    </script>
    
  • RegExp:正则表达式

    • test():检索字符串中指定的值
  • Functions:

    • 全局函数(直接用,不需要创建对象)
      • decodeURI():解码某个编码的URI
      • decodeURIComponent():解码一个编码的URI组件
      • encodeURI():把字符串编码为URI
      • encodeURIComponent():把字符串编码为URI组件
      • eval():执行字符串里的代码
      • parseInt():
      • parseFloat():
      • String():把对象转成字符串
<script>
    var str = "张三";
    //alert(encodeURI(str));//%E5%BC%A0%E4%B8%89
    //alert(encodeURIComponent(str));//%E5%BC%A0%E4%B8%89
    
    //alert(decodeURI(encodeURI(str)));//张三
    //alert(decodeURIComponent(encodeURIComponent(str)));//张三
    
    var str1 = "http://www.itheima.cn";
    //alert(encodeURI(str1));//http://www.itheima.cn
    //alert(encodeURIComponent(str1));//http%3A%2F%2Fwww.itheima.cn
    
    //alert(decodeURI(encodeURI(str1)));//http://www.itheima.cn
    //alert(decodeURIComponent(encodeURIComponent(str1)));//http://www.itheima.cn
    
    var str2 = "alert('abc')";
    //alert(str2);
    eval(str2);
</script>           
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容

  • 一、JS前言 (1)认识JS 也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HT...
    凛0_0阅读 2,765评论 0 8
  • 第1章 认识JS JavaScript能做什么?1.增强页面动态效果(如:下拉菜单、图片轮播、信息滚动等)2.实现...
    mo默22阅读 1,265评论 0 5
  • 早上看到余华的创作谈。他说,(写作的捷径)只有一个字,就是写,写个二三十年,写作就变成了你的生活。写字对我的生活影...
    啊华的沉淀时光阅读 342评论 2 1
  • 在美国年收入只要在2万美元以下,就算是穷人,而如果想摆脱穷人的困境很也简单,美国的社会学家总结只有做到以下三条就可...
    陈伊铠阅读 567评论 0 0
  • 天色渐渐黑了,行人都匆匆忙忙的准备着回家,我的心也越来越沉重,今天你又失约了,每当夜深人静的时候我都会想起...
    回不去的十八岁阅读 162评论 0 0