day8--js3

1、DOM操作

children 子节点 儿子节点
parentNode 父节点

谷歌和火狐的方式
firstElementChild 一胎
lastElementChild 最后一胎
previousElementSibling 上一个兄弟节点
nextElementSibling 下一个兄弟节点

这是ie的方式
firstChild
lastChild
previousSibling
nextSibling

        <title></title>
    </head>
    <body>
        <div id="star">
            <ul class="child1">
                <li>库里</li>
                <li>科比 </li>
                <li>詹姆斯</li>
                <li id="wan">杜兰特</li>
                <li id="word">字母哥</li>
            </ul>
            <ol class="child2">
                <li>后卫</li>
                <li>前锋</li>
                <li>分位</li>
                <li>中锋</li>
                
            </ol>
        </div>
        <div>
            <ul>
                <li>张若昀</li>
                <li>张天爱</li>
                <li>张益达</li>
                <li>张无忌</li>
            </ul>
            <ol>
                <li>武动乾坤</li>
                <li>斗破苍穹</li>
                <li>永恒圣帝</li>
                <li>王道剑尊</li>
            </ol>
            
        </div>
    </body>
</html>
<script type="text/javascript">
    var odiv1 = document.getElementById('star')
    //获取子节点
//  console.log(odiv1.children)
    var odu = document.getElementById('wan')
    //获取父节点
//  console.log(odu.parentNode)
    var oword = document.getElementById('word')
    //从字母哥开始找到王道剑尊
    
    console.log(oword.parentNode.parentNode.nextElementSibling.lastElementChild.lastElementChild)
    
    
</script>

通过document可以动态的创建和删除节点

tagName 获取对象标签的名字 大写
createElement 创建节点
removeChild 父节点.removeChild(子节点)
appendChild 添加节点
添加存在的节点,本质是移动节点
insertBefore 添加节点 insertBefore(new, old)

setAttribute : 既可以设置官方属性,又可以设置自定义属性
getAttribute : 既可以获取官方属性,也可以获取自定义属性


        <title></title>
    </head>
    <body>
        <ul id="word1">
            <li>张若昀</li>
            <li>胡歌</li>
            <li id="name2">霍建华</li>
            <li>倪大红</li>
        </ul>
        <ul id="word2">
            <li>杨紫</li>
            <li>迪丽热巴</li>
            <li>张天爱</li>
            <li id="name1">程潇</li>
        </ul>
        <button id="word3" like = "足球">点我</button>
    </body>
</html>
<script type="text/javascript">
    var owd1 = document.getElementById('word1')
    var owd2 = document.getElementById('word2')
    var obtn = document.getElementById('word3')
    obtn.onclick = function (){
        //添加官方属性或者非官方属性
//      obtn.watch = 'see'
//      obtn.setAttribute('watch','see')
        
//      获取官方属性,也可以获取非官方属性
//      console.log(obtn.getAttribute('watch')) 
//创建节点
    var oli = document.createElement('li')
    oli.innerHTML = '柳岩'
    //动态添加节点
    owd1.appendChild(oli)
    
    var oname1 = document.getElementById('name1')
    var oname2 = document.getElementById('name2')
    //添加在某个节点之前
    owd1.insertBefore(oname1,oname2)
    //删除谋个节点
    owd1.removeChild(oname1)
        
    }
</script>

留言板

        <title></title>
    </head>
    <body>
        <input type="text" name="" id="test1" value="" />
        <input type="button" name="" id="test2" value="留言" />
        <ul id="content"></ul>
        
    </body>
</html>
<script type="text/javascript">
    var otst1 = document.getElementById('test1')
    var otst2 = document.getElementById('test2')
    var oten = document.getElementById('content')




otst2.onclick = function(){
    //获取属性
    message = otst1.value
    //创建一个li标签
    var oli = document.createElement('li')
    //把内容传给li标签,添加删除功能
    oli.innerHTML = message+'&nbsp;&nbsp;&nbsp;<a href="javascript:;">删除</a>'
    
    //得到删除节点
    var oa = oli.getElementsByTagName('a')[0]
    oa.onclick = function(){
        oten.removeChild(oli)
    }
    
    //添加的时候放在最前面
    if (oten.children){
        oten.insertBefore(oli,oten.children[0])
    }
    else{
        oten.appendChild(oli)
    }
    //清空输入框
    otst1.value = ''
    //让输入框获得焦点
    otst1.focus()
}



//简易留言板
//  otst2.onclick = function(){
//      //获取输入框中的内容
//  message = otst1.value
//  //创建一个li标签
//  var oli = document.createElement('li')
////    把内容放进li标签里面
//  oli.innerHTML = message
//  //把li标签添加进oten中
//  oten.appendChild(oli)
//      
//      
//  }
</script>

2、事件绑定和事件冒泡

addEventListener 谷歌和火狐方式
removeEventListener
attachEvent ie方式
detachEvent


        <title></title>
    </head>
    <body>
        <div id="word" style="width: 200px;height: 200px;background-color: green"></div>
    </body>
</html>
<script type="text/javascript">
    var odiv = document.getElementById('word')
    //绑定事件
    odiv.addEventListener('click',function(){
        alert('窗前明月光')
    })
    odiv.addEventListener('click',function(){
        alert('飞流直下三千尺')
    })
    
    
// odiv.attachEvent('onclick', function () {
//     alert('君不见黄河之水天上来')
// })
// odiv.attachEvent('onclick', function () {
//     alert('奔流到海不复回')
// })

// odiv.onclick = function () {
//     alert('羌笛何须怨杨柳,春风不度玉门关')
// }
// odiv.onclick = function () {
//     alert('劝君更尽一杯酒,西出阳关无故人')
// }    
</script>

获取事件对象

事件ev 火狐、谷歌
window.event ie、谷歌
兼容性写法: var oevent = ev || event
获取事件的x和y坐标
oevent.clientX oevent.clientY
相对窗口左上角的坐标

    <body>
        <div id="word" style="width: 200px;height: 200px;background-color: green;">
            
        </div>
    </body>
</html>
<script type="text/javascript">
    var odiv = document.getElementById('word')
    odiv .onclick = function(ev){
        var oevent = ev || event
        //获取事件的x坐标和y坐标
    console.log(oevent.clientX,oevent.clientY)
    }
</script>
取消事件冒泡

事件的属性和方法
cancelBubble ie方式、谷歌、火狐都支持
stopPropagation() 谷歌、火狐方式
事件源对象
srcElement ie、谷歌
target 火狐、谷歌

    <body>
        <div id="word" style="width: 200px;height: 200px;background-color: green;">
        <div id="word1" style="width: 100px;height: 100px;background-color: red;">
            
        </div>  
        </div>
    </body>
</html>
<script type="text/javascript">
    var odiv = document.getElementById('word')
    var odiv1 = document.getElementById('word1')
    odiv.onclick = function(){
        alert('日照香炉生紫烟')
    }
    odiv1.onclick = function(ev){
        alert('礼拜后才能广州')
        //取消事件冒泡
        var oevent = ev || event
        oevent.stopPropagation()
        //获取事件源对象
        console.log(oevent.target)
    }

</script>

3、小知识

禁止鼠标右键
document.oncontextmenu = function () {
return false
}
超链接和事件同时触发
事件的属性和方法
returnValue ie、谷歌
preventDefault() 火狐、谷歌
return false ie、谷歌、火狐
键盘事件
document.onkeydown : 捕获用户点击的按钮
获取按钮的编号
oevent.keyCode


<body>
    <a id="du" href="http://www.baidu.com/">百度一下</a>
</body>
</html>
<script>
    // document.onkeydown = function (ev) {
    //     var oevent = ev || event
    //     console.log(oevent.keyCode)
    // }
    document.onkeypress = function (ev) {
        var oevent = ev || event
        console.log(oevent.keyCode)
    }
    // var oa = document.getElementById('du')
    // oa.onclick = function (ev) {
    //     alert('这次第,怎一个愁字了得')
    //     var oevent = ev || event
    //     // oevent.returnValue = false
    //     // oevent.preventDefault()
    //     return false
    // }
// document.oncontextmenu = function () {
//     return false
// }
</script>

4、正则对象

规则是一样的。
单字符:. \w \d \W \s \S \D [aoe]
数量: {m} {m,} {m,n} {0,}==* {1,}==+ {0,1}==?
match : 正则匹配
replace : 正则替换


<script>
string = '我想我会一直孤单,就这么孤单一辈子'
ret = /幸福/

console.log(string.match(ret))
// console.log(string.replace(ret, '幸福'))
</script>

5、表单对象

三种查找方法
(1)根据id获取
(2)document.forms 得到文档中所有的form
(3)根据name获取
document.formname
获取该表单里面input框的值,假如该input框name=user
document.formname.user.value
submit()方法
document.formname.submit() 谁都能提交
js验证表单内容

    <title>表单</title>
</head>
<body>
    <form action="xxx" method="get" name="goudan">
        <input type="text" name="user" value="王狗蛋">
        <!-- <input type="submit" value="提交"> -->
        <a href="javascript:;" id="aa">登录</a>
    </form>
    <form action="" method="post"></form>
</body>
</html>
<script>
var oa = document.getElementById('aa')
oa.onclick = function () {
    document.goudan.submit()
}
// 第二种方式
// console.log(document.forms[1].method)
// console.log(document.goudan)
// console.log(document.goudan.user.value)
</script>

6、吸顶条

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,347评论 1 45
  • 一 1. DOM操作 children 子节点 儿子节点 parentNode 父节点 谷歌和火狐的方式...
    pubalabala阅读 323评论 0 0
  • js属性及操作 1、DOM操作 children 子节点 儿子节点parentNode 父节点 谷歌和火...
    BIGBOSS_93d6阅读 164评论 0 0
  • 1、DOM操作 children 子节点 儿子节点 parentNode 父节点 谷歌和火狐的方式-- ...
    文化银儿阅读 391评论 0 2
  • 2018.1.20 中国|潍坊 受伤了,学会自己治愈自己,不要带着伤口活着。 不是一个天空的月亮,终究是不一样的月...
    一蝉一树阅读 573评论 1 5