元素的设置
<!-- 所有的HTMl元素,我们可以根据具体需求,自定义添加属性 -->
<div haha="abc" id="xyz"></div>
获取属性的值
- 元素.属性名的方式只适用于元素原生的属性
console.log(div.id);
- 元素.getAttribute("属性名")可以获取自定义和原生的属性
console.log(div.getAttribute("haha"));
设置属性的元素
- 元素.setAttribute("属性名","值")可以设置元素的属性
div.setAttribute("asd", "123");
//如果设置的属性名一样,会覆盖
div.setAttribute("asd", "1234");
删除属性
- 元素.removeAttribute("属性名")可以删除元素的属性
div.removeAttribute("asd");
获取元素的所有属性
- 返回的结果是一个属性节点的映射和集合
//获取元素的所有属性
console.log(div.attributes);
//通过下标获取指定属性
console.log(div.attributes[1]);
//通过下标获取指定属性名
console.log(div.attributes[1].name);
//通过下标获取指定属性值
console.log(div.attributes[1].value);
//通过下标修改属性值
div.attributes[1].value = "xxx";
设置元素的原生属性
//元素.属性名 = 属性值
div.id = "aaa";
div.title = "bbb";
// 给class元素属性设置---->样式特殊得通过className
div.className = "fontStyle";
设置元素的行内css样式
//元素.style = "";
div.style = "color:red";
BOM:Browser Object Model
-
BOM的对象
-
核心对象window
-
navigator
-
history
-
screen
-
location
-
回调函数
let callback = function (a) {
console.log(a);
}
//可以传入各种类型的数据
callback(1);
callback("hello");
callback({name:"zhangsan"});
callback([1,2,3]);
test函数
test函数中,入参可以是一个函数
let test = function (fun) {
console.log("before");
console.log("after");
}
let callback = function (data) {
console.log("I am callback," + data);
}
test(1); //输出before、after
----------------------------------------------------------------------------------
let test = function (fun) {
console.log("before");
// 调用了传进来的函数
fun(1000);
console.log("after");
}
let callback = function (data) {
console.log("I am callback," + data);
}
/*
传入的参数是一个函数类型时,
只需要写函数名,不需要写()小括号
*/
test(callback);/*输出before、
I am callback,1000、
after*/
定时函数
<script>
/*
参数1:函数
参数2:延迟时间(ms)
*/
let timer = setTimeout(function () {
document.write("<h1>5秒钟后可以见到我</h1>")
}, 5000);
//清除计时函数
//参数:要清除的计时器
clearTimeout(timer);
/*
定义两个按钮
点击第一个按钮:x秒后打印输出一句话
点击第二个按钮,终止这个操作
*/
<button onclick="start()">打印</button>
<button onclick="end()">终止</button>
let timer1;
function start() {
timer1 = setTimeout(function () {
document.write("<h1>5秒钟后可以见到我</h1>")
}, 5000);
}
function end() {
clearTimeout(timer1);
}
周期性定时器
//周期性定时器,每隔多少秒走一次
let timer2 = setInterval(function () {
document.write("123");
}, 2000)
// 倒计时 5,4,3,2,1,go
<button onclick="daojishi()">倒计时</button>
let i = 5;
function daojishi() {
if (i > 0) {
let timer2 = setInterval(function () {
document.write(i);
i--;
if (i == 0) {
clearInterval(timer2);
let timer3 = setInterval(function () {
document.write("go");
i--;
if (i == -1) {
clearInterval(timer3);
}
}, 1000)
}
}, 1000)
}
}
Storage 类型
Storage 类型用于保存名/值对数据,直至存储空间上限(由浏览器决定)
- 浏览器自带了一个小型的数据库
- 浏览器自带的一个map集合,永久保存
// 向Storage中设置键值对
window.localStorage.setItem("name","lucy");
window.localStorage.setItem("age",25);
// 从Storage中根据建获取值
console.log(localStorage.getItem("name"));
// 从Storage中删除对应的键值对
// localStorage.removeItem("name");
// 清空Storage所有的键值对
localStorage.clear();
sessionStorage.setItem("name","jack");
弹窗
- 警告弹窗
alert("!!!");
- 带有确认和取消的弹窗,返回值是boolean
let flag = confirm("好人是你吗?");
alert(flag);
- 带有文本框的弹窗,文本框输入的内容就是返回值
let name = prompt("请输入你的名字:", "例如:张三");
history:历史记录
<body>
<a href="https://www.runoob.com/">倒计时</a>
<button onclick="fun()">前进</button>
<script>
/*
history:历史记录
*/
function fun() {
//点击按钮回到下一个历史记录
history.forward();
//点击按钮回到上一个历史记录
history.back();
// 既可以前进,又可以后退
// 传入的参数为正,则前进
// 传入的参数为负,则后退
// 参数就是步数,走几步
history.go(2);
}
</script>
</body>
location
<body>
<button onclick="fun()">按钮</button>
<script>
/*
location
*/
function fun() {
// 值是要跳转页面的路径
// 可以是相对路径,也可以是绝对路径,还可以是http地址
location.href = "demo02.html";
location.href = "http://www.baidu.com";
// 取值
alert(location.href);
// 刷新页面
location.reload();
}
</script>
</body>
screen
//获取当前电脑的高度和长度
console.log(screen.width);
console.log(screen.height);
//获取当前电脑的可用高度和可用长度
console.log(screen.availHeight);
console.log(screen.availWidth);
事件
- 添加事件
//获取指定的元素
let div = document.querySelector("div");
/*
参数1:要添加的事件类型
参数2:添加的事件要触发的函数
*/
div.addEventListener("click", function () {
alert("click");
});
//操作元素的属性
div.onclick = function () {
alert("onclick");
}
- 删除事件
let div = document.querySelector("div");
div.onclick = function () {
alert("onlick");
}
//删除事件的方式之一
div.onclick = null;
div.onclick = false;
div.onclick = "";
----------------------------------------------------------------------------------
let callback = function () {
console.log("callback");
}
div.addEventListener("click", callback);
//删除事件
div.removeEventListener("click", callback);
- 表单提交事件
<body>
<!-- 表单提交事件 -->
<form action="aaa" onsubmit="return fun()">
<input type="text" required>
<input type="submit" value="提交">
</form>
<script>
/*
onsubmit事件注意:
1、onsubmit是加在form表单上
2.onsubmit 要有return
3、函数也要返回boolean类型
*/
function fun() {
return true;
}
</script>
</body>
- 阻止事件冒泡
- 在此例子中,li是ul的子元素----->实现点击li不执行ul父元素中的函数
<body>
<ul onclick="fun()">
<li>哈哈哈</li>
</ul>
<script>
function fun() {
alert("11");
}
let li = document.querySelector("li");
li.addEventListener("click", function (event) {
//阻止事件冒泡
/*
1、在子元素的事件出发函数中阻止
2、借助event对象
3、调用一个方法
event对象必须通过addEventListener方式添加事件才可以使用
*/
event.stopPropagation();
alert("22");
});
</script>
</body>