前端之javascript2
js组成和标签获取元素
javascript组成
1、ECMAscript javascript的语法(变量、函数、循环语句等语法)
2、DOM 文档对象模型 操作html和css的方法(比如通过id或者标签来获取元素并赋予颜色之类的样式)
3、BOM 浏览器对象模型 操作浏览器的一些方法(比如控制浏览器弹出窗口或者控制台打印数据)
标签获取元素
获取元素的第二种方法
document.getElementsByTagName(''),获取的是一个选择集,不是数组,但是可以用下标的方式操作选择集里面的dom元素。
关于性能,如果在循环时,有一个固定的值每次都要去查询一次,应该将那个固定的值先在外面定义好;
标签获取元素示例-各行换色
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>通过标签获取元素</title>
<script type="text/javascript">
window.onload = function () {
// 通过标签名称获取li元素,生成一个选择集,赋值给aLi
var aLi = document.getElementsByTagName('li');
// 读取选择集内元素的个数
//alert(aLi.length); // 弹出13 var iLen = aLi.length;
//给一个li设置背景色
//aLi[0].style.backgroundColor = 'gold'; // 不能给选择集设置样式属性
//aLi.style.backgroundColor = 'gold'; /*
同时给所有的li加背景色
for(var i=0;i<iLen;i++)
{
aLi[i].style.backgroundColor = 'gold';
}
*/ var oUl = document.getElementById('list1');
var aLi2 = oUl.getElementsByTagName('li'); var iLen2 = aLi2.length;
for (var i = 0; i < iLen2; i++) {
if (i % 2 == 0) {
aLi2[i].style.backgroundColor = 'gold';
}
}
}
</script>
</head>
<body>
<ul id="list1">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
</ul> <ul id="list2">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</body>
</html>
标签获取元素示例-各行换色
字符串操作方法
js操作数据的能力还是没有后端强,所以一般是由后端处理好数据后,再传给前端,但前端有时候也会需要自己处理数据;
字符串处理方法
- 1、字符串合并操作:“ + ”
- 2、parseInt() 将数字字符串转化为整数
- 3、parseFloat() 将数字字符串转化为小数
- 4、split() 把一个字符串分隔成字符串组成的数组
- 5、charAt() 获取字符串中的某一个字符
- 6、indexOf() 查找字符串是否含有某字符
- 7、substring() 截取字符串 用法: substring(start,end)(不包括end)
- 8、toUpperCase() 字符串转大写
- 9、toLowerCase() 字符串转小写
字符串反转
var str = 'asdfj12jlsdkf098';
var str2 = str.split('').reverse().join(''); alert(str2);
字符串操作方法实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>字符串的处理方法</title>
<script type="text/javascript">
var iNum01 = 12;
var sNum02 = '24';
var sTr = 'abc'; // 数字和字符串相加等同于字符串拼接
//alert(iNum01+sNum02); // 弹出 1224
//alert(sNum02+sTr); // 弹出 24abc var sTr02 = '12.35';
//将字符串的小数转化成整数
//alert(parseInt(sTr02)); // 弹出12
//将字符串的小数转化成小数
//alert(parseFloat(sTr02)); var sTr03 = '2017-4-22';
var aRr = sTr03.split("-");
//alert(aRr); // 弹出['2017','4','22']; var aRr2 = sTr03.split("");
//alert(aRr2); // 弹出['2','0','1','7','-','4','-','2','2'] var sTr04 = '#div';
var sTr05 = sTr04.charAt(0);
// alert(sTr05); 弹出 # var sTr06 = 'abcdef microsoft asldjfl';
var iNum03 = sTr06.indexOf('microsoft');
var iNum04 = sTr06.indexOf('yahei');
//alert(iNum03); // 存在 弹出字符串对应的索引值 7
//alert(iNum04); // 不存在 弹出 -1 var sTr07 = 'abcdef123456edfg';
var sTr08 = sTr07.substring(6, 12);
var sTr09 = sTr04.substring(1);
//alert(sTr08);
//alert(sTr09); var sTr10 = 'abcdef';
var sTr11 = sTr10.toUpperCase();
alert(sTr11); var sTr12 = '1234j3290850ljdlsjlfajdlkskdfj';
var sTr13 = sTr12.split('').reverse().join('');
alert(sTr13);
</script>
</head>
<body> </body>
</html>
字符串操作方法实例
定时器
定时器在javascript中的作用
- 1、制作动画
- 2、异步操作
- 3、函数缓冲与节流
定时器一般建议每30ms动作一次。
定时器类型及语法
/*
定时器:
setTimeout 只执行一次的定时器
clearTimeout 关闭只执行一次的定时器
setInterval 反复执行的定时器
clearInterval 关闭反复执行的定时器 */ var time1 = setTimeout(myalert,2000);
var time2 = setInterval(myalert,2000);
/*
clearTimeout(time1);
clearInterval(time2);
*/
function myalert(){
alert('ok!');
}
定时器简单实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
function myalert(){
alert('hello world!');
} // 只执行一次的定时器,第一个参数是函数名,或者是匿名函数,第二个参数是时间,单位是毫秒,不写单位
//var timer01 = setTimeout(myalert,2000);
// 关闭只执行一次的定时器
//clearTimeout(timer01); // 反复执行的定时器
//var timer02 = setInterval(myalert,1000); 改成下面匿名函数的写法:
var timer02 = setInterval(function(){
alert('hello world!');
},1000)
//关闭反复执行的定时器
//clearInterval(timer02);
</script>
</head>
<body> </body>
</html>
定时器简单实例
定时器盒子移动实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
window.onload = function(){
var oDiv = document.getElementById('div1');
var iLeft = 0;
/*
var timer = setInterval(moving,30);
function moving(){
iLeft += 3;
oDiv.style.left = iLeft + 'px';
}
*/
var timer = setInterval(function(){
iLeft += 3;
oDiv.style.left = iLeft + 'px';
if(iLeft>700)
{
clearInterval(timer);
}
},30);
}
</script>
<style type="text/css">
.box{
width:200px;
height:200px;
background-color:gold;
position:absolute;
left:0;
top:100px;
}
</style>
</head>
<body>
<div id="div1" class="box"></div>
</body>
</html>
定时器盒子移动实例
盒子往复运动动画示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
window.onload = function () {
var oDiv = document.getElementById('div1');
var iLeft = 0;
var iSpeed = 3;
/*
var timer = setInterval(moving,30);
function moving(){
iLeft += 3;
oDiv.style.left = iLeft + 'px';
}
*/
var timer = setInterval(function () {
iLeft += iSpeed;
oDiv.style.left = iLeft + 'px'; if (iLeft > 700) {
iSpeed = -3;
}
if (iLeft < 0) {
iSpeed = 3;
}
}, 20);
}
</script>
<style type="text/css">
.box {
width: 200px;
height: 200px;
background-color: gold;
position: absolute;
left: 0;
top: 100px;
}
</style>
</head>
<body>
<div id="div1" class="box"></div>
</body>
</html>
盒子往复运动动画示例
无缝滚动示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>无缝滚动</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
} .list_con {
width: 1000px;
height: 200px;
border: 1px solid #000;
margin: 10px auto 0;
background-color: #f0f0f0;
position: relative;
overflow: hidden;
} .list_con ul {
list-style: none;
width: 2000px;
height: 200px;
position: absolute;
left: 0;
top: 0;
} .list_con li {
width: 180px;
height: 180px;
float: left;
margin: 10px;
} .btns_con {
width: 1000px;
height: 30px;
margin: 50px auto 0;
position: relative;
} .left, .right {
width: 30px;
height: 30px;
background-color: gold;
position: absolute;
left: -40px;
top: 124px;
font-size: 30px;
line-height: 30px;
color: #000;
font-family: 'Arial';
text-align: center;
cursor: pointer;
border-radius: 15px;
opacity: 0.5;
} .right {
left: 1010px;
top: 124px;
}
</style>
<script type="text/javascript">
window.onload = function () {
var oDiv = document.getElementById('slide');
var oBtn01 = document.getElementById('btn01');
var oBtn02 = document.getElementById('btn02'); //通过标签获取元素,获取的是选择集,加上下标才能获取到元素
var oUl = oDiv.getElementsByTagName('ul')[0];
var iLeft = 0;
var iSpeed = -2;
var iNowspeed = 0; //将ul里面的内容复制一份,整个ul里面就包含了10个li
oUl.innerHTML = oUl.innerHTML + oUl.innerHTML; function moving() {
iLeft += iSpeed; // 当ul向左滚动到第5个li时,瞬间将整个ul拉回到初始位置
if (iLeft < -1000) {
iLeft = 0;
}
//当ul在起始位置往右滚动时候,瞬间将整个ul拉回到往左的第5个li的位置
if (iLeft > 0) {
iLeft = -1000;
}
oUl.style.left = iLeft + 'px';
}
var timer = setInterval(moving, 30); oBtn01.onclick = function () {
iSpeed = -2;
};
oBtn02.onclick = function () {
iSpeed = 2;
};
// 当鼠标移入的时候
oDiv.onmouseover = function () {
iNowspeed = iSpeed;
iSpeed = 0;
};
// 当鼠标移出的时候
oDiv.onmouseout = function () {
iSpeed = iNowspeed;
}
}
</script>
</head>
<body>
<div class="btns_con">
<div class="left" id="btn01"><</div>
<div class="right" id="btn02">></div>
</div>
<div class="list_con" id="slide">
<ul>
<li><a href=""><img src="data:images/goods001.jpg" alt="商品图片"></a></li>
<li><a href=""><img src="data:images/goods002.jpg" alt="商品图片"></a></li>
<li><a href=""><img src="data:images/goods003.jpg" alt="商品图片"></a></li>
<li><a href=""><img src="data:images/goods004.jpg" alt="商品图片"></a></li>
<li><a href=""><img src="data:images/goods005.jpg" alt="商品图片"></a></li>
</ul>
</div>
</body>
</html>
无缝滚动示例
无缝滚动原理:
将一个图片列表复制成两份,形成两个并列的图片,然后设置定时移动,当向左或向右移动超过一定距离时,再根据情况拉回到一定位置。具体可看代码。
其中包含鼠标移入事件onmouseover。
定时器制作时钟示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
window.onload = function () {
var oDiv = document.getElementById('div1'); function fnTimego() {
var sNow = new Date();
// 获取年份
var iYear = sNow.getFullYear();
// 获取月份,月份是从0到11,0表示一月,11表示十二月
var iMonth = sNow.getMonth() + 1;
var iDate = sNow.getDate();
// 星期是从0到6,0表示星期天
var iWeek = sNow.getDay();
var iHour = sNow.getHours();
var iMinute = sNow.getMinutes();
var iSecond = sNow.getSeconds(); var sTr = '当前时间是:' + iYear + '年' + iMonth + '月' + iDate + '日 ' + fnToweek(iWeek) + ' '
+ fnTodou(iHour) + ':' + fnTodou(iMinute) + ':' + fnTodou(iSecond);
oDiv.innerHTML = sTr;
}
// 刚开始调用一次,解决刚开始1秒钟空白的问题
fnTimego();
setInterval(fnTimego, 1000);
function fnToweek(n) {
if (n == 0) {
return '星期日';
} else if (n == 1) {
return '星期一';
} else if (n == 2) {
return '星期二';
} else if (n == 3) {
return '星期三';
} else if (n == 4) {
return '星期四';
} else if (n == 5) {
return '星期五';
} else {
return '星期六';
}
} function fnTodou(n) {
if (n < 10) {
return '0' + n;
} else {
return n;
}
}
}
</script>
<style type="text/css">
div {
text-align: center;
font-size: 30px;
color: red;
}
</style>
</head>
<body>
<div id="div1"></div>
</body>
</html>
定时器制作时钟示例
特别注意,js中时间获取中的获取月份是按照0-11的顺序,所以月份应该加1:iMonth = sNow.getMonth() + 1;。
定时器制作节日活动倒计时示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
window.onload = function () {
var oDiv = document.getElementById('div1'); function fnTimeleft() {
//实际开发中需要读取后台的时间,可以通过ajax来读取
var sNow = new Date();
// 未来时间:4月30日晚24点
var sFuture = new Date(2017, 3, 30, 24, 0, 0); //计算还有多少秒
var sLeft = parseInt((sFuture - sNow) / 1000);
//计算还剩多少天
var iDays = parseInt(sLeft / 86400);
// 计算还剩多少小时
var iHours = parseInt((sLeft % 86400) / 3600);
// 计算还剩多少分
var iMinutes = parseInt(((sLeft % 86400) % 3600) / 60);
// 计算还剩多少秒
var iSeconds = sLeft % 60; var sTr = '距离5月1日还剩:' + iDays + '天' + fnTodou(iHours) + '时' + fnTodou(iMinutes) + '分' + fnTodou(iSeconds) + '秒';
oDiv.innerHTML = sTr;
} fnTimeleft();
setInterval(fnTimeleft, 1000); function fnTodou(n) {
if (n < 10) {
return '0' + n;
} else {
return n;
}
}
}
</script>
</head>
<style type="text/css">
div {
text-align: center;
font-size: 30px;
color: pink;
}
</style>
<body>
<div id="div1"></div>
</body>
</html>
定时器制作倒计时示例
倒计时关闭弹框/丐版示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.menu {
height: 80px;
background-color: gold;
position: fixed;
width: 960px;
top: 0px;
left: 50%;
margin-left: -480px;
} p {
text-align: center;
} .popup {
width: 500px;
height: 300px;
border: 1px solid #000;
background-color: #fff;
position: fixed;
left: 50%;
margin-left: -251px;
top: 50%;
margin-top: -151px;
z-index: 9999;
} .popup h2 {
background-color: gold;
margin: 10px;
height: 40px;
} .mask {
position: fixed;
width: 100%;
height: 100%;
background-color: #000;
left: 0;
top: 0;
opacity: 0.5;
z-index: 9998;
} .pop_con {
display: none;
}
</style>
</head>
<body>
<div class="menu">菜单文字</div>
<div class="pop_con" style="display: block">
<div class="popup">
<h2>弹框的标题</h2>
<br>
<br>
<br>
<p>还有5秒钟关闭弹框</p>
</div>
<div class="mask"></div>
</div> <input type="button" name="" value="弹出弹框"> <p>网页文字</p>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
... <p>网页文字</p> </body>
</html>
倒计时关闭弹框/丐版示例
变量作用域
变量作用域指的是变量的作用范围,javascript中的变量分为全局变量和局部变量。
- 1、全局变量:在函数之外定义的变量,为整个页面公用,函数内部外部都可以访问。
- 2、局部变量:在函数内部定义的变量,只能在定义该变量的函数内部访问,外部无法访问。
<script type="text/javascript">
//全局变量
var a = 12;
function myalert()
{
//局部变量
var b = 23;
alert(a);
alert(b);
}
myalert(); //弹出12和23
alert(a); //弹出12
alert(b); //出错
</script>
变量作用域示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
//函数外部定义的是全局变量,函数内部和外部都可以访问
var iNum01 = 12;
// 重复定义,后面的会覆盖前面的值
//var iNum01 = 14; function myalert(){
//var iNum01 = 24;
// 函数内部定义的是局部变量,函数内部可以访问,外部不能访问
var iNum02 = 36;
alert(iNum01);
iNum01 += 10;
} function myalert02(){
alert(iNum01);
}
myalert(); // 弹出 12
myalert02(); // 弹出 22
//alert(iNum02); 出错!
</script>
</head>
<body> </body>
</html>
变量作用域示例
封闭函数
封闭函数是javascript中匿名函数的另外一种写法,创建一个一开始就执行而不用命名的函数。
注意封闭函数和匿名函数的相似。
封闭函数的作用:创建一个封闭的空间,在空间里面定义自己的函数或者参数,自己的参数不会影响外界的参数,外界也无法调用自己内部的参数;可以有效防止命名冲突。
在原系统上新加功能建议使用封闭函数。
一般定义的函数和执行函数:
function changecolor(){
var oDiv = document.getElementById('div1');
oDiv.style.color = 'red';
}
changecolor();
封闭函数:
(function(){
var oDiv = document.getElementById('div1');
oDiv.style.color = 'red';
})();
还可以在函数定义前加上“~”和“!”等符号来定义匿名函数
!function(){
var oDiv = document.getElementById('div1');
oDiv.style.color = 'red';
}()
封闭函数示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="js/main.js"></script>
<script type="text/javascript">
/*
function myalert(){
alert('hello world!');
}
myalert();
转换成封闭函数的写法:
*/ /*(function(){
alert('hello world!');
})();*/ //封闭函数的第二种写法:
/*!function(){
alert('hello world!');
}();*/ ~function () {
alert('hello world!');
}(); var iNum01 = 12;
function myalert02() {
alert('hello world!');
} // 在封闭函数前加一个“;” , 可以避免js压缩时候出错。
(function () {
var iNum01 = 24;
function myalert02() {
alert('hello hello!');
}
alert(iNum01);
myalert02();
})(); alert(iNum01);
myalert02();
</script>
</head>
<body> </body>
</html>
封闭函数示例
闭包
什么是闭包
函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回
function aaa(a){
var b = 5;
function bbb(){
a++;
b++;
alert(a);
alert(b);
}
return bbb;
} var ccc = aaa(2); ccc();
ccc();
改写成封闭函数的形式:
var ccc = (function(a){ var b = 5;
function bbb(){
a++;
b++;
alert(a);
alert(b);
}
return bbb; })(2); ccc();
ccc();
用处
1、将一个变量长期驻扎在内存当中,可用于循环中存索引值
<script type="text/javascript">
window.onload = function(){
var aLi = document.getElementsByTagName('li');
for(var i=0;i<aLi.length;i++)
{
(function(i){
aLi[i].onclick = function(){
alert(i);
}
})(i);
}
}
</script>
......
<ul>
<li>111</li>
<li>222</li>
<li>333</li>
<li>444</li>
<li>555</li>
</ul>
2、私有变量计数器,外部无法访问,避免全局变量的污染
<script type="text/javascript"> var count = (function(){
var a = 0;
function add(){
a++;
return a;
}
return add;
})() count();
count(); var nowcount = count();
alert(nowcount);
</script>
内置对象
1、document
document.grtElementById
document.grtElementByTagName
document.referrer //获取上一个跳转页面的地址(需要服务器环境)
2、location
window.location.href //获取或者重定url地址
window.location.search //获取地址参数部分
window.location.hash //获取页面锚点或者叫哈希值
3、Math
Math.random 获取0-1的随机数
Math.floor 向下取整
Math.ceil 向上取整
location的属性1示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
window.onload = function () { // 存储上一个页面的地址:
//var sUrl = document.referrer;
var oBtn = document.getElementById('btn01'); oBtn.onclick = function () {
//window.location.href = sUrl;
window.location.href = "http://www.baidu.com";
}
}
</script>
</head>
<body>
<input type="button" name="" value="跳转" id="btn01">
</body>
</html>
location的属性1示例
location的属性2示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
window.onload = function () {
var oBody = document.getElementById('body01');
var sData = window.location.search;
alert(sData); var sHash = window.location.hash;
alert(sHash); if (sData != '') {
var aRr = sData.split("=");
var iNum = aRr[1]; if (iNum == 1) {
oBody.style.backgroundColor = 'gold';
} else if (iNum == 2) {
oBody.style.backgroundColor = 'green';
} else {
oBody.style.backgroundColor = 'pink';
}
}
}
</script>
</head>
<body id="body01">
<h1>007页面</h1>
</body>
</html> <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<a href="007window-location的属性02.html">链接到007页面</a><br><br>
<a href="007window-location的属性02.html?aa=1">链接到金色背景007页面</a><br><br>
<a href="007window-location的属性02.html?aa=2">链接到绿色背景007页面</a>
<br><br>
<a href="007window-location的属性02.html?aa=3">链接到粉色背景007页面</a>
<br><br>
</body>
</html>
location的属性2示例
math对象示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript"> var iPi = Math.PI; var arr = [];
for (var i = 0; i < 100; i++) {
// Math.random 只能返回从0到1之间的随机数,不包括0,也不包括1
var iNum = Math.random();
arr.push(iNum);
}
//alert(arr);
console.log(arr); //向下取整,去掉小数部分
alert(Math.floor(5.6)); // 弹出5
//向上取整,去掉小数部分,整体加1
alert(Math.ceil(5.2)) // 10 - 20 之间的随机数
var iN01 = 10;
var iN02 = 20;
var arr2 = [];
for (var i = 0; i < 40; i++) {
// 生成从10到20的随机数
var iNum02 = Math.floor((iN02 - iN01 + 1) * Math.random()) + iN01;
arr2.push(iNum02);
}
console.log(arr2); </script>
</head>
<body> </body>
</html>
math对象示例
面向对象
面向过程与面向对象编程
1、面向过程:所有的工作都是现写现用。
2、面向对象:是一种编程思想,许多功能事先已经编写好了,在使用时,只需要关注功能的运用,而不需要这个功能的具体实现过程。
javascript对象
将相关的变量和函数组合成一个整体,这个整体叫做对象,对象中的变量叫做属性,变量中的函数叫做方法。javascript中的对象类似字典。
创建对象的方法
1、单体
<script type="text/javascript">
var Tom = {
name : 'tom',
age : 18,
showname : function(){
alert('我的名字叫'+this.name);
},
showage : function(){
alert('我今年'+this.age+'岁');
}
}
</script>
2、工厂模式
<script type="text/javascript"> function Person(name,age,job){
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.showname = function(){
alert('我的名字叫'+this.name);
};
o.showage = function(){
alert('我今年'+this.age+'岁');
};
o.showjob = function(){
alert('我的工作是'+this.job);
};
return o;
}
var tom = Person('tom',18,'程序员');
tom.showname(); </script>
2、构造函数
<script type="text/javascript">
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
this.showname = function(){
alert('我的名字叫'+this.name);
};
this.showage = function(){
alert('我今年'+this.age+'岁');
};
this.showjob = function(){
alert('我的工作是'+this.job);
};
}
var tom = new Person('tom',18,'程序员');
var jack = new Person('jack',19,'销售');
alert(tom.showjob==jack.showjob);
</script>
3、原型模式
<script type="text/javascript">
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
}
Person.prototype.showname = function(){
alert('我的名字叫'+this.name);
};
Person.prototype.showage = function(){
alert('我今年'+this.age+'岁');
};
Person.prototype.showjob = function(){
alert('我的工作是'+this.job);
};
var tom = new Person('tom',18,'程序员');
var jack = new Person('jack',19,'销售');
alert(tom.showjob==jack.showjob);
</script>
4、继承
<script type="text/javascript"> function fclass(name,age){
this.name = name;
this.age = age;
}
fclass.prototype.showname = function(){
alert(this.name);
}
fclass.prototype.showage = function(){
alert(this.age);
}
function sclass(name,age,job)
{
fclass.call(this,name,age);
this.job = job;
}
sclass.prototype = new fclass();
sclass.prototype.showjob = function(){
alert(this.job);
}
var tom = new sclass('tom',19,'全栈工程师');
tom.showname();
tom.showage();
tom.showjob();
</script>
调试程序的方法
1、alert
2、console.log
3、document.title
调试js方法示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
window.onload = function () {
var oBody = document.getElementById('body01'); var iNum01 = 12;
// alert 会阻止程序的运行
//alert(iNum01);
console.log(iNum01);
oBody.style.backgroundColor = 'gold'; var iNum02 = 24;
var iNum03 = 36; //alert(iNum02);
console.log(iNum02); setInterval(function () {
iNum03++;
//console.log(iNum03);
document.title = iNum03;
}, 100)
}
</script>
</head>
<body id="body01"> </body>
</html>
调试js方法示例
类型转换
1、直接转换 parseInt() 与 parseFloat()
alert('12'+7); //弹出127
alert( parseInt('12') + 7 ); //弹出19
alert( parseInt(5.6)); // 弹出5
alert('5.6'+2.3); // 弹出5.62.3
alert(parseFloat('5.6')+2.3); // 弹出7.8999999999999995
alert(0.1+0.2); //弹出 0.3000000000000004
alert((0.1*100+0.2*100)/100); //弹出0.3
alert((parseFloat('5.6')*100+2.3*100)/100); //弹出7.9
2、隐式转换 “==” 和 “-”
if('3'==3)
{
alert('相等');
} // 弹出'相等'
alert('10'-3); // 弹出7
3、NaN 和 isNaN
alert( parseInt('123abc') ); // 弹出123
alert( parseInt('abc123') ); // 弹出NaN
前端之javascript2的更多相关文章
- 前端笔记-javaScript-2
一.JavaScript的对象 简介: 在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,String.Math.Array. ...
- 转:Github上最受关注的前端大牛,快来膜拜吧!
原文来自于:http://code.csdn.net/news/2820990 本文列出了Github上最受关注的10位前端大牛.看看他们负责的项目和提交的代码,你是不是能从中学到些什么? 1. Pa ...
- Github上最受关注的前端大牛,快来膜拜吧!
1. Paul Irish Github主页: https://github.com/paulirish 个人主页: http://paulirish.com 维基百科: http://en.wiki ...
- Github上最受关注的前端大牛 快来膜拜把!
Github上最受关注的前端大牛 快来膜拜吧! 来源:csdn 发布时间:2014-08-06 阅读次数:4058 14 本文列出了Github上最受关注的10位前端大牛.看看他们负责的项目和提交 ...
- (转)国内外优秀的Web前端工程师
1. 国内外优秀的Web前端工程师 寻找Github.微博.知乎等技术社区上比较活跃.影响力大的圈内大神,供大家膜拜! 视野所限,未必全面,欢迎大家推荐.自荐. 排名不分先后,序号只为标记方便. 提供 ...
- 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)
通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...
- 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)
前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...
- 前端极易被误导的css选择器权重计算及css内联样式的妙用技巧
记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前 ...
- 总结:Mac前端开发环境的搭建(配置)
新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...
随机推荐
- kubernetes haproxy+keepalive实现master集群高可用
前言 master的HA,实际是apiserver的HA.Master的其他组件controller-manager.scheduler都是可以通过etcd做选举(--leader-elect),而A ...
- JS如何判断鼠标滚轮向上还是向下滚动
前几天偶然看到某前端群有人在问:JS如何判断鼠标滚轮向上还是向下滚动? 我想了想,有点蒙蔽,心想难道不是用scrollTop来判断吗? 但我不确定,也出于好奇心,于是开始了一番探索 思路:通过even ...
- Spring 框架基础(02):Bean的生命周期,作用域,装配总结
本文源码:GitHub·点这里 || GitEE·点这里 一.装配方式 Bean的概念:Spring框架管理的应用程序中,由Spring容器负责创建,装配,设置属性,进而管理整个生命周期的对象,称为B ...
- SpringBoot2.0 整合 ElasticSearch框架,实现高性能搜索引擎
本文源码:GitHub·点这里 || GitEE·点这里 一.安装和简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful ...
- 微软、IBM、GitLab 等大厂全部到齐的 OCS 第一天有什么看点?
在本周一的推文中我们大致介绍了下 Open Core 峰会及到场嘉宾,(≧▽≦) 当然还有 Nebula Graph 在会场的展位位置图,本文我们来看看 Open Core 峰会第一天有哪些值得一看的 ...
- C/C++ 中的宏/Macro
宏(Macro)本质上就是代码片段,通过别名来使用.在编译前的预处理中,宏会被替换为真实所指代的代码片段,即下图中 Preprocessor 处理的部分. C/C++ 代码编译过程 - 图片来自 nt ...
- c#中的Nullable(可空类型)
在C#中使用Nullable类型(给整型赋null值的方法) 在C#1.x的版本中,一个值类型变量是不可以被赋予null值的,否则会产生异常.在C#2.0中,微软提供了Nullable类型,允许用它定 ...
- linux中rpm和yum
一.rpm介绍 一种用于互联网下载包的打包及安装工具.它生成具有.RPM 扩展名的文件.RPM 是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 windo ...
- Go-获取变量数据类型
package main import ( "fmt" "reflect" //这个包里的TypeOf方法获取变量数据类型 ) func main(){ b : ...
- JS基础语法---对象总结
* 编程思想: * 面向过程:凡事亲力亲为,所有的事情的过程都要清楚,注重的是过程 * 面向对象:提出需求,找到对象,对象解决这个问题,我们要结果,注重的是结果 * ...