(一)JS介绍
(1)JS作用与书写要求
作用:
如果把HTML比做一个人,那么CSS就是衣服,那JS就是指人的动作和行为
书写:
JS代码可以直接写在script标签里面,或者写在其他的.js后缀文件中,并通过script标签引入。注意:在引入js文件的script里面,一定不能写js代码。当然也可以在标签内写js代码,但是这种方式并不推荐。
要求:
- 一般把script标签写在 head 或者 body 里
- 要注意的是是否需要加上window.onload(代码从上往下运行,写在head时,不会获取到body中的元素,需要加载整个文档)
- 如果没有特殊要求,一般script标签放在body结束之前
比如这个弹窗代码(alert):
<head>
<meta charset="UTF-8">
<title>js</title>
<script>
alert('头部的js代码') // 弹窗
</script>
</head>
<body>
</body>
<head>
<meta charset="UTF-8">
<title>js</title>
</head>
<body>
<script>
alert('body的js代码') // 弹窗
</script>
</body>
<body>
<!-- 在引入js文件的script里面,一定不能写js代码-->
<script src="../js/js1.js">
alert('这是引用外部js文件当中的的js代码') // 弹窗 js代码无效
</script>
</body>
(二)JS获取元素
在js中想要操作元素,或者说执行一些行为,首先需要获取到对应的元素。才能进行下一步的操作,所以要首先学会如何获取元素。
(1)JS获取独有标签方法:
- document . title 获取标题
- document . head 获取头部信息
- document . body 获取body内容
<head>
<meta charset="UTF-8">
<title>js</title>
</head>
<body>
<script>
console.log(document) //输出文档 console.log相当于python中的print
console.log(document.title) //文档 网页的标题
document.title = '修改后的标题' //‘js’改为‘修改后的标题’
</script>
</body>
获取body及head信息同理,另外还可以获取网页中body的文本及标签内容
- document.body.innerText(网页的获取body的文本内容)
- document.body.innerHTML(网页的获取body的标签内容)
<body>
这是body
<span>这是span标签</span>
<script>
console.log(document.body.innerText) //文档 网页的获取body的文本内容
</script>
</body>
<body>
这是body
<span>这是span标签</span>
<script>
// console.log(document.body.innerText) //文档 网页的获取body的文本内容
console.log(document.body.innerHTML) //文档 网页的获取body的标签内容
</script>
</body>
修改内容:
innerText
<body>
这是body
<span>这是span标签</span>
<script>
console.log(document.body.innerText) //文档 网页的获取body的文本内容
document.body.innerText = '<h1>这是通过js修改后添加的h1标签</h1>' //不会把h1解析成标签,依旧是内容
</script>
</body>
innerHTML
<body>
这是body
<span>这是span标签</span>
<script>
console.log(document.body.innerHTML) //文档 网页的获取body的标签内容
document.body.innerHTML = '<h1>这是通过js修改后添加的h1标签</h1>' //把h1解析为标签
</script>
</body>
(2)其他标签的获取
- 通过id获取元素:document.getElementById(“idname”)
<body>
<p id="p1">关于中国</p>
<script>
by_id = document.getElementById('p1') //通过获取id获取元素并命名
console.log(by_id.innerText) //输出获取的元素
by_id.innerText = '你好中国' //将关于中国改为你好中国
</script>
</body>
- 通过class获取元素:document.getElementsByClassName(“classname”)
<body>
<span class="sp1">张三</span>
<span class="sp1">李四</span>
<script>
// 通过class获取元素
by_class = document.getElementsByClassName('sp1') // 获取后是数组对象object(列表) [span.sp1, span.sp1]
console.log(by_class[0].innerText) // 是列表形式就可以按索引获取的单个元素
by_class[0].innerText = '张三是男生'
// by_class[1].innerText = '李四是女生'
</script>
</body>
- 通过标签名获取元素:document.getElementsByTagName(“tagdem”)
<body>
<p id="p1">关于中国</p>
<span class="sp1">张三</span>
<span class="sp1">李四</span>
<script>
// 通过标签名获取元素
by_tag = document.getElementsByTagName('p') // 数组对象object(列表)
console.log(by_tag[0].innerText)
by_tag[0].innerText = '你好中国'
</script>
</body>
- 表单中的元素:document.getElementsByName(“元素”)
<body>
<form action="#">
性别:
<input type="radio" name="sex" value="nan"> 男
<input type="radio" name="sex" value="nv"> 女
<input type="radio" name="sex" value="wu"> 无
</form>
<script>
// 表单中的name
by_name = document.getElementsByName('sex') //获取sex元素,数组形式
console.log(by_name[0].value) //获取value值
by_name[0].value = '男' //修改value值
console.log(by_name[0].value) //修改之后获取值
</script>
</body>
- selector选择器获取一个或所有
<body>
<p id="p1">关于中国</p>
<span class="sp1">张三</span>
<span class="sp1">李四</span>
<script>
// selector选择器
qs = document.querySelector('#p1') //获取一个p标签
console.log(qs)
// qs_all = document.querySelectorAll('.sp1') //获取所有span标签
// console.log(qs_all)
</script>
</body>
(三)JS简单事件
所谓事件,是指JavaScript捕获到用户的操作,并做出正确的响应
<body>
<p id="p1">关于中国</p>
<span class="sp1">张三</span>
<span class="sp1">李四</span>
<script>
/*
左键单击 onclick
左键双击 ondblclick
鼠标移入 onmouseover/onmouseenter
鼠标移出 onmouseout/onmouseleave
*/
// 通过id获取元素
p1 = document.getElementById('p1')
// p1.onclick = function () { //把需要做的事情写在函数当中
// p1.innerText = '你好中国' //针对p1做文本修改的操作(单击后变为你好中国)
// }
// p1.ondblclick = function () {
// p1.innerText = '关于中国' //双击后变为关于中国
// }
// p1.onmouseover = function () {
// // p1.style.cssText = 'color:red' //鼠标移入后字体变为红色
// // 会保留之前的css样式
// p1.style['color'] = 'red' //第二种格式
// }
//
// p1.onmouseout = function () {
// // 不会保留样式,重置样式
// // p1.style.cssText = 'font-size:30px' //鼠标移出后字体大小变为30px
// p1.style['font-size'] = '30px' //第二种格式,加[]后移入移出会保留原来属性,即移出时字体也为红色
//
// }
</script>
</body>
(四)JS属性
<head>
<meta charset="UTF-8">
<title>js属性</title>
<!-- <style>-->
<!-- p{display: none;}--> <!--消失-->
<!-- </style>-->
</head>
<body>
<p id="p1">关于中国</p>
<span class="sp1">张三</span>
<span class="sp1">李四</span>
<script>
p1.onclick = function () { //把需要做的事情写在函数当中
p1.setAttribute('style','display: none')//针对p1做文本修改的操作(单击后消失)
}
// js属性
// 获取元素属性
// console.log(p1.getAttribute('id'));
// 设置属性值
// p1.setAttribute('id','pp') //已有属性则修改
// p1.setAttribute('style','display: none') //没有属性则增加
// 移除属性
// p1.removeAttribute('id')
</script>
</body>
运行后对“关于中国”添加单击消失的样式。
(五)JS基本数据类型
<body>
<p id="p1">关于中国</p>
<span class="sp1">张三</span>
<span class="sp1">李四</span>
<script>
p1 = document.getElementById('p1')
// typeof
// console.log(typeof zhangsan) // undefined 未定义
// console.log(typeof 123) // number 数字
// console.log(typeof '123') // string 字符串
// console.log(typeof true) // boolean 布尔值
// console.log(typeof false) // boolean 布尔值
// 对象 object
// console.log(typeof p1) // object 标签对象
// console.log(typeof [1,2,3,4]) // object 数组对象
// console.log(typeof null) // object 空值对象
// console.log(typeof {'a':1,'b':2}) // object 字典对象
</script>
</body>