博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web前端学习笔记——JavaScript之事件、创建元素、节点操作
阅读量:4217 次
发布时间:2019-05-26

本文共 3945 字,大约阅读时间需要 13 分钟。

事件

事件:触发-响应机制

Event接口表示在DOM中发生的任何事件,一些是用户生成的(例如鼠标或键盘事件),而其他由API生成。

事件三要素

  • 事件源:触发(被)事件的元素
  • 事件类型:事件的触发方式(例如鼠标点击或键盘点击)
  • 事件处理程序:事件触发后要执行的代码(函数形式)

事件的基本使用

var box = document.getElementById('box');box.onclick = function() {
console.log('代码会在box被点击后执行'); };

案例

  • 点击按钮弹出提示框
  • 点击按钮修改元素的样式

属性操作

非表单元素的属性

href、title、id、src、className

var link = document.getElementById('link');console.log(link.href);console.log(link.title);var pic = document.getElementById('pic');console.log(pic.src);

案例:

​ 点击按钮,切换img标签里的图片

​ 点击按钮显示隐藏div

  
title
哈哈
  • innerHTML和innerText
var box = document.getElementById('box');box.innerHTML = '我是文本

我会生成为标签

';console.log(box.innerHTML);box.innerText = '我是文本

我不会生成为标签

';console.log(box.innerText);
  • HTML转义符
"		"‘		'&		&<		<    //less than  小于>		>   // greater than  大于空格	    ©		©
  • innerHTML和innerText的区别

  • innerText的兼容性处理

表单元素属性

  • value 用于大部分表单元素的内容获取(option除外)
  • type 可以获取input标签的类型(输入框或复选框等)
  • disabled 禁用属性
  • checked 复选框选中属性
  • selected 下拉菜单选中属性

案例

  • 给文本框赋值,获取文本框的值
  • 点击按钮禁用文本框
  
title
  • 搜索文本框
  • 检测用户名是否是3-6位,密码是否是6-8位,如果不满足要求高亮显示文本框
  • 设置下拉框中的选中项
  • 全选反选

自定义属性操作

  • getAttribute() 获取标签行内属性
  • setAttribute() 设置标签行内属性
  • removeAttribute() 移除标签行内属性
  • 与element.属性的区别: 上述三个方法用于获取任意的行内属性。

样式操作

  • 使用style方式设置的样式显示在标签行内
var box = document.getElementById('box');box.style.width = '100px';box.style.height = '100px';box.style.backgroundColor = 'red';
  • 注意

    通过样式属性设置宽高、位置的属性类型是字符串,需要加上px

类名操作

  • 修改标签的className属性相当于直接修改标签的类名
var box = document.getElementById('box');box.className = 'clearfix';

案例

  • 开关灯
  • 点击按钮变色
  • 图片切换二维码案例
  • 当前输入的文本框高亮显示
  • 点击按钮改变div的大小和位置
  • 列表隔行变色、高亮显示
  
序号 姓名 课程 成绩
1 柳岩 语文 100
2 苍老师 日语 100
3 凤姐 营销学 100
4 芙蓉姐姐 数学 10
5 佐助 英语 100
6 卡卡西 体育 100
7 乔峰 体育 100
  • 京东商品展示
  • tab选项卡切换
  
Title

创建元素的三种方式

document.write()

document.write('新设置的内容

标签也可以生成

');

innerHTML

var box = document.getElementById('box');box.innerHTML = '新内容

新标签

';

document.createElement()

var div = document.createElement('div');document.body.appendChild(div);

性能问题

  • innerHTML方法由于会对字符串进行解析,需要避免在循环内多次使用。
  • 可以借助字符串或数组的方式进行替换,再设置给innerHTML
  • 优化后与document.createElement性能相近

案例

  • 动态创建列表,高亮显示
  
title
  • 根据数据动态创建表格
  • 模拟百度搜索文本框
  
Title

节点操作

var body = document.body;var div = document.createElement('div');body.appendChild(div);var firstEle = body.children[0];body.insertBefore(div,firstEle);body.removeChild(firstEle);var text = document.createElement('p');body.replaceChild(text, div);

案例:

​ 无刷新评论

  
title
猪猪: 我喜欢吃肉
昵称:

节点层级

重点讲父子属性,兄弟属性画图讲解

var box = document.getElementById('box');console.log(box.parentNode);console.log(box.childNodes);console.log(box.children);console.log(box.nextSibling);console.log(box.previousSibling);console.log(box.firstChild);console.log(box.lastChild);
  • 注意

    childNodes和children的区别,childNodes获取的是子节点,children获取的是子元素

    nextSibling和previousSibling获取的是节点,获取元素对应的属性是nextElementSibling和previousElementSibling获取的是元素

    ​ nextElementSibling和previousElementSibling有兼容性问题,IE9以后才支持

  • 总结

节点操作,方法	appendChild()	insertBefore()	removeChild()	replaceChild()节点层次,属性	parentNode	childNodes	children	nextSibling/previousSibling	firstChild/lastChild

转载地址:http://nixmi.baihongyu.com/

你可能感兴趣的文章
POJ 2536 解题报告
查看>>
POJ 1154 解题报告
查看>>
POJ 1661 解题报告
查看>>
POJ 1101 解题报告
查看>>
ACM POJ catalogues[转载]
查看>>
常见的排序算法
查看>>
hdu 3460 Ancient Printer(trie tree)
查看>>
KMP
查看>>
poj 3863Business Center
查看>>
Android编译系统简要介绍和学习计划
查看>>
Android编译系统环境初始化过程分析
查看>>
user2eng 笔记
查看>>
DRM in Android
查看>>
ARC MRC 变换
查看>>
Swift cell的自适应高度
查看>>
【linux】.fuse_hiddenXXXX 文件是如何生成的?
查看>>
【LKM】整合多个LKM为1个
查看>>
【Windows C++】调用powershell上传指定目录下所有文件
查看>>
Java图形界面中单选按钮JRadioButton和按钮Button事件处理
查看>>
小练习 - 排序:冒泡、选择、快排
查看>>