前言:
1.HTML5的发展非常迅速,可以说已经是前端开发人员的标配,在电商类型的APP中更是运用广泛,这个系列的文章是本人自己整理,尽量将开发中不常用到的剔除,将经常使用的拿出来,使需要的朋友能够真正快速入门,如果有哪些不清楚的地方或者错误,欢迎联系我 2.更新时间没有规律,一般会在3天左右更新一篇(全系列预计会有12篇)因为需要工作,所以只能在闲暇之余整理,如果有喜欢的朋友可以关注我,将会第一时间获得更新信息 3.如果有需要Reactive Native + H5跨平台开发的朋友,可以联系我,在本系列结束之前会根据需求的程度决定是否继续 4.全系列文章最后尽可能地附上综合实例,帮助朋友更好地理解 5.此系列会涉及到HTML、CSS、JavaScript等 6.如果文章的图片无法显示或页面显示不全,烦请转至简书查阅:简书
页内JS:在当前网页的script标签中书写
<script type="text/javascript"> </script>外部JS
<script src="index.js"></script>结果:
接下来,我们来看看在JS里面变量怎么进行拼接
var name = '张三'; var name2 = '狗蛋'; var newName = name + name2; var newName2 = name + name2 + '王二麻子'; console.log(newName, newName2); // 不同类型的变量进行拼接 var string = 10 + '10'; var string2 = 10 + 10 + '10'; var string3 = '10' + 10 + 10; var string4 = 10 + 20.0 + '30'; console.log(string, string2, string3, string4);结果:
结论:从上面可以看出,JS的运算规则是从左向右进行拼接的,且如上面所示,任何类型的变量与String类型进行拼接最终都会被强转为String类型定义数组
var array = [10, '张三', 30.0, ['数组中的数组', 8.0]]; console.log(typeof array, array); // 取值:JS和其它语言一样,数组都是使用下标来取值 // 遍历 for(var i = 0; i<array; i++) { console.log(i, array[i]); } for(var i in array) { console.log(i, array[i]); } // 删除和插入元素 var array1 = [10, 20, 30]; // 插入元素 array1.push(40); console.log(array1); // 删除元素 array1.pop(); console.log(array1);结果:
从上面的示例中可以看出在JS里面,数组可以放任何类型的数据
类库(Math):与数学相关的运算都在这个库里面
// 类库 Math(与数学相关的运算都在这个库里面) // 取最小值转换为整数 console.log('floor' + Math.floor(7.1, 10, 20, 30.0, 40)); // 取最小值 console.log('min' + Math.min(1, 2, 3, 4, 5)); // 取最大值 console.log('max' + Math.max(1, 2, 3, 4, 5));结果:
格式:
// 定义 function sum(a, b) { return a + b; } // 调用 console.log('和为:' + sum(10, 20));结果:
其实在JS里,本身就自带一个数组,一般称它为内置数组(arguments),在开发中它的作用非常大,因为我们传进来的东西都会存放进这个数组中
<script> // 这里我们利用这个特性将数组中的所有元素相加 // 函数的内置数组 --> arguments function sum2() { var count = 0; // 遍历 for (var i = 0; i<arguments.length; i++) { count += arguments[i]; } return count; } // 调用 console.log('和为:', sum2(1,2,3)); </script>结果:
匿名函数:匿名函数有个注意点是必须要有接收者
var test = function () { console.log('匿名函数被调用'); } // 调用 test();结果:
先来简单创建一个对象
// 创建对象 var person = { // 名字 name : '狗蛋', // 年龄 age : 18, // 行为 action : ['eat', 'run', 'jump'], eat : function (something) { // 想要使用对象里面的属性,可以使用this关键字来获取 console.log(this.name + '吃' + something); } }; // 调用对象 console.log(person.name, person.age, person.action[1], person.eat('面包'));结果:
在JS中,如果我们需要批量产生对象,需要使用构造函数来实现,构造函数可以看成Objective-C中的类,而Objective-C生成对象是通过alloc -> init或者new,在JS中,就是用new来创建对象
// 构造函数 // 方式一: function Person() { // 因为 this 在那个地方,那它就指向谁相当于 Objective-C 中的self this.name = null; this.age = 18; this.action = []; // 注意,函数需要我们实现里面的逻辑 this.eat = function (something) { console.log(this.name + '吃' + something); } } // 生成对象 var ps1 = new Person(); ps1.name = '张三'; var ps2 = new Person(); ps2.name = '狗蛋'; // 方式二: function Person2(name, age, action, eat) { this.name = name; this.age = age; this.action = action; this.eat = function (something) { console.log(this.name + '吃' + something); }; } // 生成对象 var ps3 = new Person2('王二麻子', '19', ['eat', 'jump', 'run']); console.log(ps1, ps2, ps3);结果:
动态跳转:通过JS的配合,可以动态在某个地方实现跳转,在移动开发中,经常用来传值
window.location.href = 'https://www.baidu.com';效果:
这边我们增加个需求,当我们不断点击按钮时,让图片不断在2张图片间切换 补充:在HTML中,会自动给图片加上一些前缀以保证路径完整,所以如果简单的判断图片路径是不可以的,所以下面的判断中我们会涉及到2个函数 indexOf:截取指定区域的字符,正确会返回任意正数,错误则返回-1lastIndexOf:获取尾部区域字符,正确会返回任意正数,错误则返回-1 <body> <img id="iconImg" src="img/icon.jpg" width="100" height="100"> <button class="btn">更改图片</button> <script> var img = document.getElementById('iconImg'); var btn = document.getElementsByClassName('btn')[0]; btn.onclick = function changeImg() { if (img.src.lastIndexOf("img/icon.jpg") != -1) { // 当前图片为img/icon.jpg img.src = 'img/lufei.jpg'; } else { img.src = 'img/icon.jpg'; } } </script> </body>效果:
下面会介绍几种常用的事件
<body> <img name="icon" src="img/icon.jpg" width="100" height="100"> <script> // 当window加载时调用 window.onload = function () { var img = document.getElementsByName('icon')[0]; // 鼠标进入图片 img.onmouseover = function () { console.log('鼠标进入图片'); } // 鼠标在图片上移动 img.onmousemove = function () { console.log('鼠标在图片上移动'); } // 鼠标离开图片 img.onmouseout = function () { console.log('鼠标离开图片'); } // 图片被点击 img.onclick = function () { console.log('图片被点击'); } } </script> </body>效果:
顺带提一下,记得之前的文章中,我们使用伪类来监听<input>标签获取焦点时的事件,学习JS后,我们可以使用JS来实现,记住这么一句话 —— JS是万能的
<body> <input class="input" type="text" placeholder="我是文本框"> <script> // 获取input标签 var input = document.getElementsByClassName('input')[0]; window.onload = function () { // 当input获取焦点时 input.onfocus = function () { console.log('获取到焦点'); } } </script> </body>效果:
效果:
还有一种方式,就是拿到相应的标签,往标签内新增一个新标签,我们先给页面初始化一个div标签 <head> <meta charset="UTF-8"> <title>Title</title> <style type="text/css"> .background{ background: yellow; width: 200px; height: 200px; } </style> </head> <body> <div class="background"></div> <script src="JS/index.js"></script> </body>效果:
接着,在index.js文件中往div内添加新的标签 // 方式二 // 获得标签 var background = document.getElementsByClassName('background')[0]; // 创建一个新按钮标签 var newButton = document.createElement('button'); newButton.innerText = '新按钮'; // 将标签注入div background.appendChild(newButton);效果:
改:上面我们就已经使用了多次改的操作,就不再叙述了 删:删除的话这里介绍最好用的一个 // 删 newButton.remove();效果:
查: getElementsByClassName、getElementsByName、getElementById、getElementsByTagName上面都说过了这边介绍一下怎么查看标签内包含的子标签 // 查 var check = background.childNodes; console.log(check);效果:
转载于:https://www.cnblogs.com/miaomiaoshen/p/5840927.html
