• dom操作


    DOM(Document Object Model 文档对象模型)
    dom对象实际就是将html标签转换成了一个文档对象,可以通过dom对象中js提供的方法,找到html的各个标签,通过找到标签就可以操作标签使页面动起来,让页面动起来,dom实际上是一种定位方式
    使用chrome浏览器,右键检查,在Console里面操作,输入document,点击回车,出来#document,鼠标放到上面整个页面标蓝了,展开#document就是html源码,通过document定位到页面上的任一元素

    直接获取标签:
    document.getElementById('inner1')  # 获取id为inner1的标签,id不能重复
    document.getElementsByTagName('div')  # 根据标签名称获得标签数组
    document.getElementsByClassName('inner')  # 根据class属性获取标签数组
    document.getElementsByName('username')  # 根据name属性获取标签数组

    在javascript里var是声明一个局部变量,var tmp = document.getElementById('inner1'),输入tmp回车打印出一个div标签,输入tmp.children,回车打印出一个list,HTMLCollection(2) [span, input],包含两个标签,列表取值tmp.children[1].value = '哈哈哈',就是把placeholder里的值修改了并在文本框里显示

    间接获取标签:
    var tmp = document.getElementById('inner1')
    tmp.parentElement # 父节点标签元素
    tmp.children # 所有子标签
    tmp.firstElementChild # 第一个子标签元素
    tmp.lastElementChild # 最后一个子标签元素
    tmp.nextElementSibling # 下一个兄弟标签元素,修改place的值:tmp.nextElementSibling.children[1].value = 'sun'
    tmp.previousElementSibling # 上一个兄弟标签元素

    文本内容操作:
    tmp.innerText # 插入的永远是字符串
    tmp.innerText='div' # 更改标签内文本内容
    tmp.innerHTML # 插入的是字符串,双引号格式
    tmp.innerHTML = '<input type="button" value="提交">' # innerHTML 如果有符合标签规则的字符串,可以将含有HTML代码的字符串变为标签,tmp.innerText做不到

    tmp.value # 获取input、textarea参数
    tmp.value = '内容' # 对input、textarea的内容进行赋值

    select标签:
    tmp.value # 获取当前select标签选中的value值
    tmp.value = '选项' # 通过赋值可以更改value属性,但是必须是预制的value属性
    tmp.selectedIndex # 获取当前select选中的下标
    tmp.selectedIndex = '1' # 通过下标更改select的选项
    document.getElementsByTagName('select')[0].selectedIndex = '3'

    操作样式:
    className:字符串形式的class名
    var element = document.getElementById('clst')
    element打印出<div class="inner" id="clst"></div>
    element.className打印出"inner "
    element.className = 'inner tmp1'回车可以看到改名成功,打印出"inner tmp1" # 改名,增加默认红色
    element.className = 'inner tmp2'回车可以看到改名成功,打印出"inner tmp2" # 改名,增加默认黄色
    classList: 列表形式的class名
    element.classList回车可以看到DOMTokenList(2) ["inner", "tmp2", value: "inner tmp2"],列表里有两个元素值,分别是inner和inner2
    add(): 对列表的样式进行增加
    element.classList.add("tmp1")回车没有报错,输入element.classList可以看到增加成功,列表里分别是inner和inner2、inner1
    remove(): 对列表的样式进行删除
    element.classList.remove('tmp2')回车没有报错,可见删除成功,可以再次删除其他元素
    style.xxx: 操作样式的粒度更加细化,操作单个样式属性,相当于在标签中增加一个style属性,在css中样式可以通过-进行连接,在JavaScript中,所有的-都被去掉,-后面的第一个字符大写,如element.style.backgroundColor='green',C是大写的,如element.style.display='none'隐藏输入框

    操作属性:
    setAttribute(key,value): 设置属性,在标签中添加属性或自定义属性
    输入r.setAttribute('placeholder', '请输入XXX'),点击回车,input框里输入了请输入XXX
    removeAttribute(key): 删除属性,在标签中删除指定属性
    输入var r = document.getElementById('r1')
    输入r回车,打印出<input type="text" id="r1" placeholder="请输入XXX">
    输入r.removeAttribute('value'),点击回车,把input框里的内容清空
    attributes: 获取标签的所有属性

    创建标签两种方式:
    第一种,通过obj创建
    createElement(tagName): 通过DOM创建一个标签对象
    appendChild(tagObj): 在父级标签内添加一个子标签对象
    var cre = document.getElementById('create') # 根据父标签的id创建一个局部变量

    var tag = document.createElement('input') # 通过DOM创建一个标签对象
    tag.setAttribute('type','text') # 设置属性,在标签中添加属性或自定义属性
    tag.setAttribute('placeholder','用户名') # 设置属性,在标签中添加属性或自定义属性
    tag.setAttribute('value','xxx') # 设置属性,在标签中添加属性或自定义属性
    cre.appendChild(tag) # 在父级标签内添加一个子标签对象,回车打印出,把鼠标定位到文本框里可以看到下面的子标签对象

    第二种,通过字符串创建
    insertAdjacentHTML(where, tagStr),参数一接受放到哪里,参数二接受字符串标签
    var str = '<input type = "text" value = "字符串添加">' # 定义一个字符串
    var tmp = document.getElementById('create1') # 定义一个变量
    tmp.insertAdjacentHTML('beforeBegin',str)  # 插入到获取到标签的前面
    tmp.insertAdjacentHTML('afterBegin',str)  # 插入到获取到标签的子标签的前面
    tmp.insertAdjacentHTML('beforeEnd',str)  # 插入到获取到标签的子标签的后面
    tmp.insertAdjacentEHTML('afterEnd',str)  # 插入到获取到标签的后面

    绑定事件的三种方式:

    第一种绑定方式:console.log
    <input type="button" value="登录" onclick="demo()">
    <script>
    function demo() {
    console.log(12345) # 在浏览器的console里打印出12345,打印一次次数+1
    }
    </script>
    第二种绑定方式:alert
    <input type="button" value="登录" onclick="demo()">
    <script>
    function demo() {
    alert('提示框') # 点击登录按钮,在浏览器里弹出一个提示框
    }
    </script>
    第三种绑定方式:confirm
    <input type="button" value="登录" onclick="demo()">
    <script>
    function demo() {
    flag = confirm('确定要登录吗?'); # 点击登录按钮,在浏览器里弹出一个确认框,两个按钮
    console.log(flag) # 在console里打印出true或false
    }
    </script>

    head和body中写引入js的区别:
    如果写在head里,代码从上到下执行,如果js文件比较大会卡在这里,影响用户体验,写在body里,代码从上到下执行,会展示body里的静态文件,当html加载结束,再加载js

    一种是在head里引入js文件,另一种是在body里引入js文件,demo.js里的代码如下:

    function demo() {
    flag = confirm('确定要登录吗?');
    console.log(flag)
    }

    html文件里的代码如下:
    <input type="button" value="登录" onclick="demo()">
    <script src="demo.js"></script>

    打断点的方式,如下

    绑定事件的两种方式:
    第一种绑定方式,不安全

    <input type="button" value="弹出弹框" onclick="click_haha()">
    <script>
    function click_haha() {
    alert('click事件')
    }
    </script>
    第二种绑定方式,相对安全,在线上环境要把代码写到一行里
    <input type="button" value="弹出弹框" id="i1">
    <script>
    var target = document.getElementById('i1'); # target随便定义,必须有这个分号
    target.onclick = function () {
    alert('点击事件,弹出提示框')
    }
    </script>
    console.log(msg) 打印日志,点击弹出弹框的按钮,就会在控制台里打印出日志,如下图
    <input type="button" value="弹出弹框" id="i1">
    <script>
    var target = document.getElementById('i1');
    target.onclick = function () {
    console.log('今天是2018年4月23日,星期一')
    }
    </script>
    confirm 确认弹框,返回true or false
    <input type="button" value="弹出弹框" id="i1">
    <script>
    var target = document.getElementById('i1');
    target.onclick = function () {
    confirm('hello')
    }
    </script>
    location.href # 获取当前的url
    location.href = 'http://www.imdsx.cn' # 重定向,输入别的URL就跳转到相应的页面
    location.reload() # 刷新
  • 相关阅读:
    权限系统概要(收集,整理)
    全程参观 Google 总部
    从Excel表格中坐标生成 点线面
    Cross Site Script 知识
    UserControl 实现From_Close
    用后立即调用Dispose
    获取鼠标点击处的颜色
    arcsde9.3 the arcsde repository is not successfully created
    ArcGIS9.3全套 下载地址
    SQLServer 2008 安装 is not a volid login or don't have permission
  • 原文地址:https://www.cnblogs.com/laosun0204/p/8889521.html
Copyright © 2020-2023  润新知