赞
踩
- <script>
- alert("Hello javaScript")
- </script>
JavaScript 代码必须位于 <script></s
cript> 标签之间(而不能自闭合)
在 HTML 文档中,可以在任意地方,放置任意数量的 <script>
一般会把脚本置于 <body> 元素的底部,可改善显示速度
- <body>
- <script>
- alert("hello JS");
- </script>
- </body>
通过 src 引用
- <body>
- <script src="JS/demo.js"></script>
- </body>
demo.JS 文件
alert("hello JS");
写入警告框
注:window. 可以省略
写入 HTML 输出
写入浏览器 console 控制台
使用 var 关键字声明变量
- var a = 20;
- a = "张三”;
- var a = 10; // 重复定义
同时 JavaScript 是弱类型语言,变量可以存放不同类型的值
特点:
特点:
特点:
JavaScript 的数据类型分为:
使用 typeof() 可以获得变量的类型
- var a = 10;
- alert(a); // number
原始类型:
引用类型:
+ - * / % ++ --
= += -= *= /= %=
> < >= <= != == ===
&& || !
条件表达式?true_value:false_value
== 与 === 的区别:
- var a = 10;
- alert(a == "10"); //true
- alert(a ==="10"); //false
- alert(a === 10); //true
string 转为 number:
将字符串字面值转为数字。如果字面值不是数字,则转为NaN
其他类型转为 boolean:
number:0和NaN为false,其他为 true
string:空字符串为 false,其他为 true
null 和 undefined:为 false
声明语句一:
- function functionName(参数1,参数2..){
- //要执行的代码
- }
注:
例如
- function add(a, b){
- return a + b;
- }
-
- alert(add(2, 3)); // 5
声明语句二:
- var functionName = function(参数1,参数2..){
- //要执行的代码
- }
例如
- var multiply = function (a, b) {
- return a * b;
- }
-
- alert(multiply(2, 3));
JavaScript 对象分为三类:
声明一
var arr = new Array(1, 2, 3, 4);
声明二
var arr = [1, 2, 3, 4];
访问
arr[10]= "hel1lo";
注:数组长度可变,类型可变
Array 的属性:
Array 的方法:
遍历数组中的每个有值的元素,并调用一次传入的函数
尾部添加新元素,返回新数组长度
从数组中删除元素
例如
- var arr = [5,7,4,1];
-
- for (let i = 0; i < arr.length; i++) {
- console.log(arr[i]);
- }
- arr.forEach(
- function(e){
- console.log(e);
- }
- )
注:forEach()的形参是一个函数,每次要调用这个函数
这样写太繁琐,所以用“箭头函数”进行简化:
(非常像 Java 的 Lambda 表达式,格式 (形参)=>{函数体} )
- arr.forEach(
- (e)=>{
- console.log(e);
- }
- )
声明一
var str = new string("Hello String");
声明二
var str = "Hello string";
属性:
方法:
JavaScript 的自定义对象:
- var 对象名 = {
- 属性名1: 属性值1,
- 属性名2: 属性值2,
- 属性名3: 属性值3,
- 函数名称: function(形参列表){}
- }
JSON:JavaScript Object Notation,JavaScript 对象标记法
JSON 是通过JavaScript 对象标记法书写的文本
由于其语法简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输
如:
{
"name":"Tom",
"age":20,
"gender":"male"
}
声明
var 变量名 = '{"key1":value1, "key2":value2}';
例如
var userStr = '{"name":"rain", "age":17}';
注:不能换行,必须用单引号引起来
两种转换方法:
var JSObject = JsoN.parse(userstr);
var JSONString = JsoN.stringify(jsobject);
Browser Object Model,允许 JavaScript 与浏览器对话,将浏览器的各个组成部分封装为对象:
获取 window 对象:(可省略)
window.
属性
方法
显示带有一段消息以及确认按钮和取消按钮的对话框,并且带有返回值
例如
- var judge = confirm("confirm you want");
- if (judge) {
- document.write("you just yes");
- }else{
- document.write("you just no");
- }
如果点了确定,就会显示 yes,反之,no
按照指定的周期(以毫秒计)来调用函数或计算表达式,第一个参数是函数,第二个参数是周期毫秒
例如
- var i = 0;
- setInterval(
- (e)=>{
- i++;
- document.write(" now it is "+i+"sec");
- }
- ,1000)
在指定的毫秒数后调用函数或计算表达式
获取:
window.location.
或(window. 可省略)
location.
属性:
设置或返回完整的 URL
例如
- var loc = location.href;
- document.write(loc);
- location.href = "http://baidu.com";
先写入当前 URL,然后改为百度的 URL,页面跳转
Document Object Model,将标记语言的各个组成部分封装为对应的对象:
获取 element:
var h1 = document.getElementById('h1');var h1 = document.getElementById('h1');
var divs = document.getElementsByTagName('div');
var hobbys = document.getElementsByName('hobby');
var clss = document.getElementsByClassName('cls');
拿到了对象,可以对对象进行修改:
使用方法
innerHTML()
返回或设置当前的值
例如
- <body>
- <!-- <table border="1px"> 已经弃用-->
- <table>
- <tr>
- <th>序号</th>
- <th>品牌Logo</th>
- <th>品牌名称</th>
- <th>企业名称</th>
- </tr>
-
- <tr>
- <td>1</td>
- <td><img src="img/huawei.jpg" width="80px" /></td>
- <td class="chinese">华为</td>
- <td class="chinese">华为技术有限公司</td>
- </tr>
-
- <tr>
- <td>2</td>
- <td><img src="img/alibaba.jpg" width="80px"></td>
- <td class="chinese">阿里巴巴</td>
- <td class="chinese">阿里巴巴集团控股有限公司</td>
- </tr>
- </table>
- <script src="JS/demo.js"></script>
- </body>
- // demo.js
- var chineses = document.getElementsByClassName("chinese");
-
- for (let index = 0; index < chineses.length; index++) {
- var c = chineses[index];
- var text = c.textContent;
- switch (text) {
- case '华为':
- c.innerHTML = 'HuaWei';
- break;
- case '阿里巴巴':
- c.innerHTML = 'Alibaba';
- break;
- case '华为技术有限公司':
- c.innerHTML = 'Huawei Technologies Co. LTD';
- break;
- case '阿里巴巴集团控股有限公司':
- c.innerHTML = 'Alibaba Group Holding LTD';
- break;
- default:
- break;
- }
- }
效果:
- <body>
- <img src="img/off.gif" id="light"><br><br>
- <input type="button" value="点亮">
- <input type="button" value="熄灭">
- <div>传智教育</div> <br>
- <div>黑马教育</div> <br>
-
- <input type="checkbox" name="hobby"> 电影
- <input type="checkbox" name="hobby"> 旅游
- <input type="checkbox" name="hobby"> 游戏<br><br>
- <input type="button" value="全选">
- <input type="button" value="反选">
- <!-- <script src="JS/light.js"></script> -->
- </body>
加上JS
- var img = document.getElementById("light");
- img.src = "img/on.gif";
-
- var divs = document.getElementsByTagName("div");
- for (let i = 0; i < divs.length; i++) {
- const div = divs[i];
- div.innerHTML += "<font color='red'> very good!</font>"
-
- }
-
- var hobbies = document.getElementsByName("hobby");
- for (let i = 0; i < hobbies.length; i++) {
- const h = hobbies[i];
- h.checked = true;
- }
两种方式:
- <input type="button" onclick="on()" value="按钮1">
- <script>
- function on(){alert('我被点击了!);
- </script>
- <input type="button" id="btn" value="按钮2">
- <script>
- document.getElementById('btn').onclick=function(){
- alert('我被点击了!);
- }
- </script>
事件名 | 说明 |
---|---|
onclick | 鼠标单击 |
onblur | 元素失去焦点 |
onfocus | 元素获得焦点 |
onload | 某个页面或图片完成加载 |
onsubmit | 表单提交 |
onkeydown | 键盘某个键被按下 |
onmouseover | 鼠标移到某个元素 |
onmouseout | 鼠标从某个元素移开 |
注:获得焦点是指文本框里闪动的光标,再点击别处,就是失去焦点
- <body>
- <img src="img/off.gif" id="light"><br><br>
- <input type="button" value="点亮" onclick="on()">
- <input type="button" value="熄灭" id="off"><br><br>
- <input type="text" value="ITCAST" id="text" onfocus="changeCaseToLower()" onblur="changeCaseToUpper()"><br><br>
-
- <input type="checkbox" name="hobby"> 电影
- <input type="checkbox" name="hobby"> 旅游
- <input type="checkbox" name="hobby"> 游戏<br><br>
- <input type="button" value="全选" id="all">
- <input type="button" value="反选" id="anti">
-
- <script>
- // 方式一
- function on() {
- var img = document.getElementById("light");
- img.src = "img/on.gif"
- }
- // 方式二
- document.getElementById("off").onclick = function () {
- var img = document.getElementById("light");
- img.src = "img/off.gif";
- }
-
- function changeCaseToLower() {
- var str = document.getElementById("text");
- var lowerCase = str.value.toLowerCase();
- str.value = lowerCase;
- }
- function changeCaseToUpper() {
- var str = document.getElementById("text");
- var upperCase = str.value.toUpperCase();
- str.value = upperCase;
- }
-
- document.getElementById("all").onclick = function () {
- var hobbies = document.getElementsByName("hobby");
- for (let i = 0; i < hobbies.length; i++) {
- const hobby = hobbies[i];
- hobby.checked = true;
- }
- }
- document.getElementById("anti").onclick = function () {
- var hobbies = document.getElementsByName("hobby");
- for (let i = 0; i < hobbies.length; i++) {
- const hobby = hobbies[i];
- hobby.checked = false;
- }
- }
- </script>
- </body>
Vue 是一套前端框架,免除原生 JavaScript 中的 DOM 操作,简化书写
基于 MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上。
- <body>
- <!-- 第三步:视图层 -->
- <div id="app">
- <input type="text" v-model="message">
- {{message}}
- </div>
- <!-- 第一步:引入 Vue.js -->
- <script src="JS/vue.js"></script>
- </body>
- <script>
- // 第二步:定义 Vue 对象
- new Vue({
- el: "#app",
- data: { // 数据模型
- message: "vue!"
- }
- })
- </script>
插值表达式:
{{表达式}}
双向数据绑定 v-model="message":
在文本框中输入,同时右边也在变化
指令:
HTML标签上带有 v-前缀 的特殊属性
常用指令:
指令 | 作用 |
---|---|
v-blind | 为 HTML 标签绑定属性值 |
v-model | 在表单元素上创建双向数据绑定 |
v-on | 为 HTML 标签绑定事件 |
v-if | 条件性的渲染某元素,判定为 true 时渲染,否则不渲染 |
v-else-if | 条件性的渲染某元素,判定为t rue 时渲染,否则不渲染 |
v-else | 条件性的渲染某元素,判定为 true 时渲染,否则不渲染 |
v-show | 根据条件展示某元素,区别在于切换的是 display 属性的值 |
v-for | 列表渲染,遍历容器的元素或者对象的属性 |
v-bind:为 HTML 标签绑定属性值
<div v-bind:href="url">
<div :href="url">
和
v-model:在表单元素上创建双向数据绑定
- <body>
- <website id="app">
- <!-- 数据绑定 -->
- 输入网址:<input type="text" id="userDefineUrl" v-model="url"><br>
- <a v-bind:href="url" target="_blank">前往一个网站(默认是百度)</a><br>
- <!-- <a :href="url" target="_blank">前往一个网站(默认是百度)</a><br> 还可以省略指令名-->
- </website>
-
- <script src="JS/vue.js"></script>
- </body>
-
- <script>
- new Vue({
- el: "#app",
- data: {
- url:"http://baidu.com",
- }
- })
- </script>
这样做的效果是,不输入的情况下点击超链接,是百度;
如果输入了一个网址,再点击超链接,出现指定网站
v-on:为 HTML 标签绑定事件
<input type="button" value="按钮" v-on:click="handle()">
<input type="button" value="按钮" @:click="handle()">
函数在 Vue 对象里面 methods 写
- <!DOCTYPE html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Vue</title>
- </head>
-
- <body>
- <div id="app">
- <input type="button" value="click me" v-on:click="clickMe()">
- <!-- <input type="button" value="click me" @click="clickMe()">-->
- </div>
-
- <script src="JS/vue.js"></script>
- </body>
-
- <script>
- new Vue({
- el: "#app",
- data: {
- url:"http://baidu.com",
- },
- methods: {
- clickMe:function(){
- alert("qwq");
- }
- },
- })
- </script>
-
- </html>
前三者都是条件性的渲染某元素,判定为 true 时渲染,否则不渲染
而 v-show 根据条件展示某元素,区别在于切换的是 display 属性的值
- <body>
- <div id="app">
- input your age <input type="text" v-model="age"> you are
- <span v-if="age < 18">child</span>
- <span v-else-if="age >= 18 && age < 30">youngster</span>
- <span v-else-if="age>=30 && age<60">mid man</span>
- <span v-else-if="age>=60 && age<=120">old man</span>
- <span v-else>alien</span>
- </div>
- <script src="JS/vue.js"></script>
- </body>
- <script>
- new Vue({
- el: "#app",
- data: {
- url:"http://baidu.com",
- age:10,
- }
- })
- </script>
效果:
v-show 显示效果和 if 一样,但是 show 是都渲染
列表渲染,遍历容器的元素或者对象的属性
- <body>
- <div id="app">
- <f v-for="(addr, index) in addrs">
- {{index}}:{{addr}} <!--插值表达式,直接在屏幕上显示-->
- </f>
- </div>
- <script src="JS/vue.js"></script>
- </body>
-
- <script>
- new Vue({
- el: "#app",
- data: {
- url: "http://baidu.com",
- age: 10,
- addrs: ['beijing', 'shanghai', 'herbin'],
- },
- })
- </script>
- <!DOCTYPE html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title>
- <style>
- #fail {
- color: red;
- }
-
- table {
- border-collapse: collapse;
- width: 20%;
-
- }
-
- th,
- td {
- border: 1px solid black;
- text-align: center;
- }
-
- /* span,td{
- font-size: 25px;
- } */
- </style>
-
- </head>
-
- <body>
- <table id="app">
- <tr>
- <th>编号</th>
- <th>姓名</th>
- <th>年龄</th>
- <th>性别</th>
- <th>成绩</th>
- <th>等级</th>
- </tr>
-
- <tr v-for="(user, index) in users">
-
- <td>{{index+1}}</td>
- <td>{{user.name}}</td>
- <td>{{user.age}}</td>
-
- <td>
- <span v-if="user.gender==1">男</span>
- <span v-else>女</span>
- </td>
-
- <td>{{user.score}}</td>
-
- <td>
- <span v-if="user.score < 60" id="fail">不及格</span>
- <span v-else-if="user.score>=60 && user.score<80">及格</span>
- <span v-else>优秀</span>
- </td>
- </tr>
- </table>
- <script src="JS/vue.js"></script>
- </body>
- <script>
- new Vue({
- el: "#app",
- data: {
- users: [{
- name: 'Tom',
- age: 20,
- gender: 1,
- score: 78
- }, {
- name: 'Rose',
- age: 18,
- gender: 2,
- score: 86
- }, {
- name: 'Jerry',
- age: 26,
- gender: 1,
- score: 90
- }, {
- name: 'Tony',
- age: 30,
- gender: 1,
- score: 52
- }]
- }
- })
- </script>
-
- </html>
主要关注 mounted
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title>
- <script src="JS/vue.js"></script>
- </head>
- <body>
- <div id='app'>
-
- </div>
-
- </body>
- <script>
- new Vue({
- el:'#app',
- mounted() {
- alert("vue挂载完成, 发送请求到服务端");
- },
- })
- </script>
- </html>
用 el 去挂载一个 DOM 元素,挂载完成,就执行 mounted 方法
类似的,八个生命周期都有各自的方法,都在指定的生命周期执行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。