外链式:将如下代码写在head里
<script src="my.js">-中间必须空着-script>
// 两个斜杠写开头单行注释
/* 两个斜杠星中间多行注释 */
弹窗输入
prompt('请输入你的年龄:');
弹窗输出
alert('你都这么老了?');
控制台输出
console.log('程序员永远年轻!'); //.log是指日志
var myname='弗朗基·德容';
var a='1',b='2',c='3'; // 用逗号变量名隔开
var myname=prompt('请输入你的姓名:');
alert('您就是大名鼎鼎的'+ myname +'?');
var 2022year; //违规变量名;不能以数字开头
var while; //违规变量名;不能与关键字相同
var myLastName; //合法变量名;驼峰命名法,首字母小写,后面单词首字母大写
用str.length获取字符串长度
var str1 = "德容别去曼联";
alert(str1.length); // 显示 6
var n = 18;
console.log(typeof n); // 显示 number
用toString()转换
var num = 10;
var str = num.toString()
console.log(str);
强制转换
console.log(String(num));
隐式转换
console(num+'字符串');
parseInt()
var age =prompt('请输入您的年龄');
consolo.log(parseInt(age)); //数字型18
consolo.log(parseInt('6.666')); //6取整
consolo.log(parseInt('100px')); //100,去单位
parseFloat()
console.log(parseFloat('6.666')); //6.666
consolo.log(parseFloat('100px')); //100,去单位
Number(变量)
var str ='123';
console.log(Number(str));
console.log(Number('12'));
隐式转换
console.log('12'-0); // 12
console.log('123' - '120'); //3
console.log('123' * 1); // 123
console.log(Boolean('')); //false
console.log(Boolean(0)); //false
console.log(Boolean(NaN)); //false
console.log(Boolean(null)); //false
console.log(Boolean(undefined)); //false
console.log(Boolean('德容')); //true
console.log(Boolean(18)); //true
console.log(18 ==='18'); //false
逻辑与&&:
表达式a && 表达式b
如果第一个表达式的值为真,则返回表达式b
如果第一个表达式的值为假,则返回表达式a
逻辑或||:
表达式a || 表达式b
如果第一个表达式的值为真,则返回表达式a
如果第一个表达式的值为假,则返回表达式b
在浏览器中按 F12选择源代码(sources)
刷新浏览器
通过watch(监视)可以看到变量值的变化【常用】
按 F11可以使程序单步执行(一步一步跑)
switch(表达式){
case value1:
当表达式等于value1 则执行此处代码;
break; //如果没有break,则执行下一个case
case value2:
当表达式等于value2 则执行此处代码;
break;
default:
当表达式不等于任何一个value时执行此处代码;
}
var arrStus =['德容',18,false,6.66];
创建一个空数组
var arr = new Array();
var arrSta = ["巴萨","皇马","利物浦"];
alert(arrSta[1]); //下标从0开始,输出数组中的第2个元素
var arrPla = ["德容","佩德里","加维"];
alert(arrPla.length); // 结果输出3
var arr = ["德容","佩德里","加维","巴萨","皇马","利物浦"]
for (var i = 0; i < arr.length; i++){
alert(arr[i]);
}
挑出数组中大于10的元素
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] >= 10) {
newArr[newArr.length] = arr[i];
} // 挑出大于10的元素排列进空的新数组
}
alert(newArr);
删除数组中的0
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
for(var i = 0; i <arr.length; i++){
if(arr[i] != 0){
newArr[newArr.length] = arr[i];
} // 把除了0之外的元素排列进空的新数组
}
alert(newArr);
var arr = [5,4,3,2,1];
for (var i = 0; i < arr.length-1; i++){ //外层循环元素个数遍
for (var j = 0; j <= arr.length - i - 1; j++){ //内层循环少一遍
if(arr[j] > arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
} // 比较当前和后一个元素,前比后大不满足条件则交换位置
}
}
alert(arr);
声明函数
function 函数名(){
函数体
}
将两个数字相加的函数
function add(num1,num2){
return num1 + num2;
}
var numPlus = add(21,6) // 调用函数,传入两个实参,并通过 numPlus 接收函数返回值
alert(numPlus);
求任意多个数中的最大值
function maxValue() {
var max = arguments[0];
for (var i = 0; i < arguments.length; i++) {
if (max < arguments[i]) {
max = arguments[i];
}
}
return max;
}
console.log(maxValue(2, 4, 5, 9));
console.log(maxValue(12, 4, 9));
if(true){
int num = 666;
alert(num); // 输出666
}
alert(num); // 不报错;输出666
function fn() {函数体} // 定义函数fn
fn(); // 调用函数fn
var fn = function(){函数体} // 定义函数fn
fn(); // 调用函数fn;调用必须写在函数代码后面
var star = {
name : '德容', // 方法之间用“ , ”隔开
age : 25,
sex : '男',
heartSpeak : function(){
alert('我不想去曼联');
} // 定义函数即对象方法,需为匿名函数;方法的命名为驼峰命名法
}
利用 new Object 创建对象
var obj = new Object(); // 创建一个空对象
obj.name = '德容'; // 每个属性和方法以分号结束
obj.age = 25;
obj.sex = '男';
obj.heartSpeak = function() {
console.log('我不想去曼联');
}
调用对象
console.log(obj.name);
obj.heartSpeak();
构造函数创建对象的语法格式
function 构造函数名() {
this.属性 = 值;
this.方法 = function() {函数体}
}
调用函数创建一个新对象
var dejong = new 构造函数名();
console.log(star.name) // 调用名字属性
star.heartSpeak() // 调用 heartSpeak 方法,注意,一定不要忘记带后面的括号
var obj = {
name: '德容',
age: 25,
sex: '男',
fn:function() { consol.log('我不去曼联!') }
}
for(var k in obj){
console.log(k) // 输出属性名
console.log(obj.]) // 输出属性值
}
Math.PI // 圆周率
Math.floor() // 往小取整
Math.ceil() // 往大取整
Math.round() // 四舍五入取整 注意:-.5的结果往大取
Math.abs() // 取绝对值
Math.max()/Math.min() // 求最大/最小值
使用random随机数方法取得一段范围内的随机整数
function getRandom(min,max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
指定一个范围
console.log(getRandom(1,10));
随机点名
var arr = ['swp', '德容','佩德里','加维'];
console.log('就决定是你了:'+arr[getRandom(0,arr.length - 1)]);
括号里没参数则返回当前系统时间
var now = new Date();
console.log(now);
括号里有参数,则按格式返回参数时间(数字型月份返回值+1)
var data1 = new Date(2002,11,22);
console.log(data1); // 返回的是6月而不是5月
var data2 = new Date('2002-11-22 5:2:1'); // 日期后空格隔开,时:分:秒
console.log(data2);
var date = new Date();
console.log(date.getFullYear()); // 返回当前日期的年 2022
console.log(date.getMonth() + 1); // 返回当前月份;记得月份 +1
console.log(date.getDate); // 返回当前几号
console.log(date.getDay()); // 周一-周六返回1-6;周日返回0
带0格式如 09:05:09
function getTimer() {
var time = new Date();
var h = time.getHours();
h = h < 10 ? '0' + h : h;
var m = time.getMinutes();
m = m < 10 ? '0' + m : m;
var s = time.getSeconds();
s = s < 10 ? '0' + s : s;
return h + ':' + m + ':' + s;
}
console.log(getTimer());
var date = new Date(); // 实例化Date对象,取得当前日期
console.log(date.valueOf()); //输出当前时间距离1970.1.1总的毫秒数
console.log(date.getTime());
简单写法
var date1 = +new Date(); // +new Date()返回总毫秒数,
console.log(date1);
function countDown(time) {
var nowTime = +new Date();
var inputTime = +new Date(time);
var times = (inputTime - nowTime) / 1000; // 剩余时间总秒数;1000ms=1s
var d = parseInt(times / 60 / 60 / 24); // 天数
d < 10 ? '0' + d : d;
var h = parseInt(times / 60 / 60 % 24); // 小时
h < 10 ? '0' + h : h;
var m = parseInt(times / 60 % 60); // 分
m < 10 ? '0' + m : m;
var s = parseInt(times % 60); // 秒
s < 10 ? '0' + s : s;
return d + '天' + h + '时' + m + '分' + s + '秒';
}
console.log(countDown('2022-5-21 5:21:00'));
var date = new Date;
console.log(date); // 当前时间
var newArr = [];
var arr = [5, 21];
console.log(arr instanceof Array); // 返回true
console.log(Array.isArray(arr)); // 返回true
var arr = [1, 2, 3];
push() 结尾加一个数组元素
arr.push(6, '结尾加一项');
console.log(arr);
console.log(arr.push(6, '结尾加一项')); // 注意:如此写法只会返回新数组的长度
unshift() 开头加一个数组元素
arr.unshift('开头加一项');
console.log(arr);
pop() 删除数组最后一个元素
arr.pop(); // 不加参数
pop() 删除数组第一个元素
arr.shift(); //不加参数
逆序数组
var arr = ['a','b','c'];
arr.reverse();
console.log(arr);
冒泡排序
var arr1 = [6,18,13,1];
arr1.sort();
console.log(arr1);
查找目标元素的下标并返回
var arr = ['red','green','blue','pink','blue'];
console.log(arr.indexOf('blue')); // 从前往后找第一个;返回2
console.log(arr.lastIndexOf('blue')); // 从后往回找第一个;返回4;
var str = '德容留在巴萨'; // 尽管被重新赋值,存储该内容的存储空间依然被保留
str = '德容去曼联'; // 开辟新的存储空间存储
var str = '德容去曼联';
console.log(str.replace('去', '不去'));
doucument.getElementByld('ID名')
<div id="time">2003-5-13</div>
<script> //采用行内式
var timer = document.getElementById('time');
console.log(timer); // 5. console.dir 打印我们的元素对象,更好的查看里面的属性和方法
</script>
doucument.getElementsByTagName('标签名');
<ul>
<li>德容会留在巴萨的1</li>
<li>德容会留在巴萨的2</li>
<li>德容会留在巴萨的3</li>
<li>德容会留在巴萨的4</li>
<li>德容会留在巴萨的5</li>
</ul>
<script>
var lis = document.getElementsByTagName('li');
console.log(lis[0]); // 以数组形式存储;以数组形式输出
遍历输出
for (var i = 0; i < lis.length; i++) {
console.log(lis[i]);
}
</script>
<ol id="ol">
<li>德容会留在巴萨的1</li>
<li>德容会留在巴萨的2</li>
<li>德容会留在巴萨的3</li>
<li>德容会留在巴萨的4</li>
<li>德容会留在巴萨的5</li>
</ol>
<script>
var ol = document.getElementById('ol'); // 同样按照数组形式存储
console.log(ol[0].getElementsByTagName('li')); // 必须指明单个父元素
</script>
document.getElementsByClassName('类名');
document.querySelector('选择器');
var firstBox = document.querySelector('.box');
document.querySelectorAll('选择器');
document.body;
document.documentElement;
<div class="box">点击方框</div>
<script>
var div = document.querySelector('div');
div.onclick = function() {
console.log('点我!');
}
</script>
element.innerText = ' 变成我 '; // 去除html标签,同时空格和换行也会去掉
element.innerHTML = ' 变成我 ';
<button>显示时间</button>
<div class="box"></div>
<script>
var but = document.querySelector('button');
var box = document.querySelector('.box');
but.onclick = function() {
box.innerText=Date();
but.innerText='隐藏时间';
}
</script>
换图片操作
img.src = 'xxx';
img.title = 'xxx';
改变表单属性的操作
input.value = "xxx";
input.type = "xxx";
input.checked = "xxx";
input.selected = true / false;
input.disabled = true / false; // 禁用按钮;不能再被点击
element.style.属性名 = ' xxx ';
改变背景颜色、宽度
div.style.backgroundColor = 'pink'; // 属性名用驼峰命名法
div.style.width = '250px';
改变类名
css
.a{
height: 100px;
width: 100px;
background-color: pink;
}
.change{
height: 100px;
width: 100px;
background-color: orange;
}
<body>
<div class="a"></div>
<script>
var box = document.querySelector('.a');
box.onclick = function() {
this.className='change'; // this.指向当前事件函数的调用者
}
</script>
</body>
<body>
<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
<script>
var btns = document.getElementsByTagName('button'); // 以伪数组形式存储
for (var i = 0; i < btns.length; i++) {
btns[i].onclick = function() {
// 把所有的按钮背景颜色去掉(干掉所有人)
for (var i = 0; i < btns.length; i++) {
btns[i].style.backgroundColor = '';
}
// 让当前的元素背景颜色为pink(留下我自己)
this.style.backgroundColor = 'pink';
}
}
</script>
</body>
html+js部分
<body>
<nav id="nav">
<ul class="n">
<li>
<a href="#">巴萨</a>
<ul>
<li><a href="">德容</a></li>
<li><a href="">佩德里</a></li>
<li><a href="">加维</a></li>
</ul>
</li>
<li>
<a href="#">皇马</a>
<ul>
<li><a href="">莫德里奇</a></li>
<li><a href="">卡塞米罗</a></li>
<li><a href="">克罗斯</a></li>
</ul>
</li>
<li>
<a href="#">曼城</a>
<ul>
<li><a href="">罗德里</a></li>
<li><a href="">德布劳内</a></li>
<li><a href="">B席尔瓦</a></li>
</ul>
</li>
</ul>
</nav>
<script>
var n=document.querySelector('.n')
var lis = n.children;
for(var i=0;i<lis.length;i++){
lis[i].onmouseover=function(){
this.children[1].style.display='block';
}
lis[i].onmouseout=function(){
this.children[1].style.display='none';
}
}
</script>
</body>
css部分
*{
margin: 0;
padding:0;
}
#nav{/*设置父盒子高度、宽度、背景颜色;使盒子水平居中*/
background: #eee;
width: 600px;
height: 40px;
margin: 0 auto;
}
#nav ul{/*去掉ul的li前面的圆点*/
list-style: none;
}
#nav ul li{/*每一个li左浮动形成横排,高度占满父容器形成文字垂直居中,文字水平居中*/
float: left;
line-height: 40px;
text-align: center;
position: relative;/*给子ul元素定位用的*/
}
#nav ul li a{/*去下划线,变块继承父容器高度,撑开宽度*/
text-decoration: none;
color:#000;
width: 100px;
padding:0 20px;
display: block;
}
#nav ul li a:hover{
color: #fff;
background-color: #666;
}
#nav ul li ul {
position: absolute;/*子ul相对于父li定位*/
left: 0;
top:40px;
display: none;
}
#nav ul li ul li{
float: none;
background-color:#eee;
}
参考1:JavaScript基础大总结(一)
参考2:JavaScript基础之函数与作用域(二)
参考3:JavaScript基础之对象与内置对象(三)
参考4:JavaScript进阶之DOM技术(四)
参考5:【重要】JS手册